Salesforce
에이펙스 테스트
수색…
주장 방법
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());
}
기본 테스트 클래스
이 테스트 클래스는 SomeClass
의 IsBlank(...)
메소드를 테스트합니다. 다음은 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.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