Salesforce
Testowanie wierzchołka
Szukaj…
Potwierdź metody
static TestMethod void DmlTest() {
List<Contact> allContacts = [SELECT Id FROM Contact];
System.assert(allContacts.isEmpty());
Contact testContact = new Contact(FirstName = 'John', LastName = 'Doe');
insert testContact;
allContacts = [SELECT Id FROM Contact];
System.assertNotEquals(0, allContacts.size(), 'Optional message in case of failure');
delete allContacts;
allContacts = [SELECT Id FROM Contact];
System.assertEquals(0, allContacts.size());
}
Podstawowa klasa testu
Ta klasa testowa przetestuje IsBlank(...)
SomeClass
. Poniżej znajduje się przykład SomeClass
. Ta klasa ma tylko jedną podstawową metodę static
, ale nie będzie można wdrożyć jej w instancji produkcyjnej do użytku, dopóki nie zostanie osiągnięty próg pokrycia kodu.
public class SomeClass {
public static Boolean IsBlank(String someData) {
if (someData == null) {
return true;
} else if (someData == '') {
return true;
} else {
return false;
}
}
}
Jak widać, ta metoda jest po prostu instrukcją if
z trzema gałęziami. Aby napisać skuteczną klasę testową, musimy zakryć każdy oddział kodem i użyć System.assertEquals(...)
, aby sprawdzić, czy właściwe dane zostały otrzymane z IsBlank(...)
.
@isTest
public class SomeClass_test {
@isTest
public static void SomeClass_IsBlank_test() {
String testData;
// SomeClass.IsBlank() returns true for Null values
System.assertEquals(true, SomeClass.IsBlank(testData));
testData = '';
// SomeClass.IsBlank() returns true for empty strings
System.assertEquals(true, SomeClass.IsBlank(testData));
testData = 'someData';
// SomeClass.IsBlank() returns false when testData is neither
// an empty string nor Null
System.assertEquals(false, SomeClass.IsBlank(testData));
}
}
Korzystanie z testSetup
Możesz użyć metody z adnotacją @testSetup
aby napisać kod, który zostanie wykonany przed każdym uruchomieniem testowym:
public class AccountService {
public static Account fetchAccount() {
return [ SELECT Id, Name FROM Account LIMIT 1 ];
}
}
@isTest
public class AccountServiceTest {
private static final String TEST_ACCOUNT_NAME = 'My Test Account';
@testSetup
public static void setUpAccountData() {
Account a = new Account(Name = TEST_ACCOUNT_NAME);
}
@isTest
public static void testFetchAccount() {
Account a = AccountService.fetchAccount();
System.assertNotEquals(null, a, 'Account should not be null');
System.assertEquals(TEST_ACCOUNT_NAME, a.Name, 'Account name should be correct');
}
}
Korzystanie z bloków statycznych
Chociaż można użyć adnotacji @testSetup
aby wyznaczyć metodę, która ma zostać uruchomiona przed wykonaniem testów, metoda ta zwykle zostanie uruchomiona tylko raz. Jeśli potrzebujesz kodu do uruchomienia przed każdym testem, możesz użyć bloku static
:
@isTest
public class MyTest {
static {
// code here will be run before each test is executed
}
}
Metody asercji
System.assert
może być użyty do sprawdzenia, czy wyrażenie logiczne ma wartość true:
System.assert(Service.isActive());
System.assert(!Service.getItems().isEmpty(), 'items should not be empty');
System.assertEquals
i System.assertNotEquals
mogą służyć do sprawdzania równości dwóch wartości. Oczekiwana wartość jest przekazywana jako pierwszy parametr, a wartość testowana jest przekazywana jako drugi.
System.assertEquals(4, Service.getItems().size());
System.assertNotEquals(null, Service.getItems());
// failure messages are optional:
System.assertEquals(true, Service.doWork(), 'doWork should return true');
System.assertNotEquals(null, Service.doWork(), 'doWork should not be null');