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');