수색…


주장 방법

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

기본 테스트 클래스

이 테스트 클래스는 SomeClassIsBlank(...) 메소드를 테스트합니다. 다음은 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
  }
}

어설 션 방법

부울식이 true로 평가 System.assert 확인하려면 System.assert 사용할 수 있습니다.

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

System.assertEqualsSystem.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