Salesforce
Apex-testen
Zoeken…
Beweer methoden
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());
}
Basistestklasse
Deze IsBlank(...)
test de IsBlank(...)
-methode van SomeClass
. Hieronder is het voorbeeld SomeClass
. Deze klasse heeft alleen die ene, fundamentele static
methode, maar u kunt deze pas in een productie-instantie gebruiken voor gebruik totdat u de drempel voor codedekking hebt bereikt.
public class SomeClass {
public static Boolean IsBlank(String someData) {
if (someData == null) {
return true;
} else if (someData == '') {
return true;
} else {
return false;
}
}
}
Zoals men kan zien, is deze methode eenvoudig een if
statement met drie takken. Om een effectieve System.assertEquals(...)
te schrijven, moeten we elke tak afdekken met code en System.assertEquals(...)
-instructies gebruiken om te controleren of de juiste gegevens zijn ontvangen van 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));
}
}
TestSetup gebruiken
U kunt een methode gebruiken die is geannoteerd met @testSetup
om code te schrijven die vóór elke testrun is uitgevoerd:
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');
}
}
Statische blokken gebruiken
Hoewel u de annotatie @testSetup
kunt gebruiken om een methode aan te geven die moet worden uitgevoerd voordat tests worden uitgevoerd, wordt deze methode meestal maar één keer uitgevoerd. Als u voor elke test code wilt uitvoeren, kunt u een static
blok gebruiken:
@isTest
public class MyTest {
static {
// code here will be run before each test is executed
}
}
Bewering methoden
System.assert
kan worden gebruikt om te controleren of een booleaanse uitdrukking waar is:
System.assert(Service.isActive());
System.assert(!Service.getItems().isEmpty(), 'items should not be empty');
System.assertEquals
en System.assertNotEquals
kunnen worden gebruikt om de gelijkheid van twee waarden te controleren. De verwachte waarde wordt doorgegeven als de eerste parameter en de te testen waarde wordt doorgegeven als de tweede.
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');