Salesforce
Apex-Prüfung
Suche…
Methoden bestätigen
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());
}
Grundlegende Testklasse
Diese IsBlank(...)
die IsBlank(...)
Methode von SomeClass
. Unten ist das Beispiel SomeClass
. Diese Klasse verfügt nur über die einzige static
Methode. Sie können sie jedoch nicht zur Verwendung in einer Produktionsinstanz bereitstellen, bis Sie den Schwellenwert für die Codeabdeckung erreicht haben.
public class SomeClass {
public static Boolean IsBlank(String someData) {
if (someData == null) {
return true;
} else if (someData == '') {
return true;
} else {
return false;
}
}
}
Wie man sieht, ist diese Methode einfach eine if
Anweisung mit drei Verzweigungen. Um eine effektive System.assertEquals(...)
zu schreiben, müssen wir jeden Zweig mit Code System.assertEquals(...)
und mit den System.assertEquals(...)
überprüfen, ob die richtigen Daten von IsBlank(...)
empfangen wurden.
@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 verwenden
Sie können eine mit @testSetup
annotierte Methode @testSetup
, um Code zu schreiben, der vor jedem Testlauf ausgeführt wurde:
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 Blöcke verwenden
Während Sie die Annotation @testSetup
, um eine Methode @testSetup
, die vor der Ausführung von Tests ausgeführt wird, wird diese Methode normalerweise nur einmal ausgeführt. Wenn Sie Code vor jedem Test ausführen müssen, können Sie einen static
Block verwenden:
@isTest
public class MyTest {
static {
// code here will be run before each test is executed
}
}
Assertionsmethoden
System.assert
kann verwendet werden, um zu überprüfen, ob ein boolescher Ausdruck als wahr ausgewertet wird:
System.assert(Service.isActive());
System.assert(!Service.getItems().isEmpty(), 'items should not be empty');
System.assertEquals
und System.assertNotEquals
können verwendet werden, um die Gleichheit zweier Werte zu überprüfen. Der erwartete Wert wird als erster Parameter und der zu testende Wert als zweiter Parameter übergeben.
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');