Salesforce
Test Apex
Recherche…
Méthodes Assert
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());
}
Classe de test de base
Cette classe de test IsBlank(...)
la IsBlank(...)
de SomeClass
. Ci-dessous, l'exemple SomeClass
. Cette classe n'a qu'une méthode static
base, mais vous ne pourrez pas la déployer sur une instance de production avant d'avoir atteint le seuil de couverture du code.
public class SomeClass {
public static Boolean IsBlank(String someData) {
if (someData == null) {
return true;
} else if (someData == '') {
return true;
} else {
return false;
}
}
}
Comme on peut le voir, cette méthode est simplement une instruction if
avec trois branches. Pour écrire une classe de test efficace, nous devons couvrir chaque branche avec du code et utiliser les instructions System.assertEquals(...)
pour vérifier que les données correctes ont été reçues d' 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));
}
}
Utiliser testSetup
Vous pouvez utiliser une méthode annotée avec @testSetup
pour écrire le code qui aura été exécuté avant chaque test:
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');
}
}
Utiliser des blocs statiques
Bien que vous puissiez utiliser l'annotation @testSetup
pour désigner une méthode à exécuter avant l'exécution des tests, cette méthode est généralement exécutée une seule fois. Si vous souhaitez que le code soit exécuté avant chaque test, vous pouvez utiliser un bloc static
:
@isTest
public class MyTest {
static {
// code here will be run before each test is executed
}
}
Méthodes d'assertion
System.assert
peut être utilisé pour vérifier qu'une expression booléenne a la valeur true:
System.assert(Service.isActive());
System.assert(!Service.getItems().isEmpty(), 'items should not be empty');
System.assertEquals
et System.assertNotEquals
peuvent être utilisés pour vérifier l'égalité de deux valeurs. La valeur attendue est transmise en tant que premier paramètre et la valeur en cours de test est transmise en tant que deuxième.
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');