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


Modified text is an extract of the original Stack Overflow Documentation
Lizenziert unter CC BY-SA 3.0
Nicht angeschlossen an Stack Overflow