Поиск…


Методы подтверждения

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

Основной тестовый класс

Этот тестовый класс проверит метод IsBlank(...) SomeClass . Ниже приведен пример SomeClass . Этот класс имеет только один базовый static метод, но вы не сможете его развернуть в производственный экземпляр для использования до тех пор, пока не достигнете порога покрытия кода.

public class SomeClass {

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

}

Как видно, этот метод - это просто оператор if с тремя ветвями. Чтобы написать эффективный класс тестов, мы должны покрыть каждую ветвь кодом и использовать System.assertEquals(...) чтобы убедиться, что правильные данные были получены из 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

Вы можете использовать метод, аннотированный с помощью @testSetup для написания кода, который будет выполнен до каждого тестового прогона:

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

Использование статических блоков

Хотя вы можете использовать аннотацию @testSetup для обозначения метода, который должен быть запущен до того, как будут выполнены тесты, этот метод обычно запускается только один раз. Если вам нужен код для запуска перед каждым тестом, вы можете использовать static блок:

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

Методы утверждения

System.assert может использоваться для проверки того, что логическое выражение оценивается как true:

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

System.assertEquals и System.assertNotEquals могут использоваться для проверки равенства двух значений. Ожидаемое значение передается как первый параметр, а тестируемое значение передается как второе.

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
Лицензировано согласно CC BY-SA 3.0
Не связан с Stack Overflow