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


Modified text is an extract of the original Stack Overflow Documentation
Licentie onder CC BY-SA 3.0
Niet aangesloten bij Stack Overflow