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


Modified text is an extract of the original Stack Overflow Documentation
Sous licence CC BY-SA 3.0
Non affilié à Stack Overflow