Sök…


Ange metoder

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());
}

Grundläggande testklass

Den här IsBlank(...) testar IsBlank(...) för SomeClass . Nedan SomeClass exemplet SomeClass . Den här klassen har endast den enda, grundläggande static metoden, men du kommer inte att kunna distribuera den till en produktionsinstans för användning förrän du har nått tröskelvärdet för kodtäckning.

public class SomeClass {

    public static Boolean IsBlank(String someData) {
        if (someData == null) {
            return true;
        } else if (someData == '') {
            return true; 
        } else {
            return false;
        }
    }

}

Som man ser är denna metod helt enkelt en if uttalande med tre grenar. För att skriva en effektiv testklass måste vi täcka varje gren med kod och använda System.assertEquals(...) uttalanden för att verifiera att rätt data har IsBlank(...) emot från 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)); 

    }

}

Med testSetup

Du kan använda en metod som är antecknad med @testSetup att skriva kod som kommer att ha körts före varje testkörning:

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

Med statiska block

Medan du kan använda @testSetup anteckningen för att utse en metod som ska köras innan test utförs, kommer den här metoden vanligtvis bara att köras en gång. Om du behöver köra för att köras före varje test kan du använda ett static block:

@isTest
public class MyTest {
  static {
    // code here will be run before each test is executed
  }
}

Påstående metoder

System.assert kan användas för att kontrollera att ett booleskt uttryck utvärderar till sant:

System.assert(Service.isActive());
System.assert(!Service.getItems().isEmpty(), 'items should not be empty');

System.assertEquals och System.assertNotEquals kan användas för att kontrollera jämvikt mellan två värden. Det förväntade värdet passeras som den första parametern och värdet under test passeras som den andra.

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
Licensierat under CC BY-SA 3.0
Inte anslutet till Stack Overflow