サーチ…


アサートメソッド

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