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
。以下は、 SomeClass
の例です。このクラスには1つの基本的なstatic
メソッドしかありませんが、コードカバレッジのしきい値に達するまで、実動インスタンスにデプロイすることはできません。
public class SomeClass {
public static Boolean IsBlank(String someData) {
if (someData == null) {
return true;
} else if (someData == '') {
return true;
} else {
return false;
}
}
}
ご覧のように、このメソッドは3つの分岐を持つ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
アノテーションを使用して、テストを実行する前に実行するメソッドを指定できますが、通常はこのメソッドは1回だけ実行されます。各テストの前にコードを実行する必要がある場合は、 static
ブロックを使用できます。
@isTest
public class MyTest {
static {
// code here will be run before each test is executed
}
}
アサーションメソッド
ブール式がtrueと評価されるかどうかを確認するには、 System.assert
を使用できます。
System.assert(Service.isActive());
System.assert(!Service.getItems().isEmpty(), 'items should not be empty');
System.assertEquals
とSystem.assertNotEquals
を使用して、2つの値の等しいかどうかを確認できます。期待値は最初のパラメータとして渡され、テスト中の値は2番目のパラメータとして渡されます。
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