この文章は Salesforce 機械翻訳システムを使用して翻訳されました。詳細はこちらをご参照ください。
英語に切り替える

Test クラス

Apex テストに関連するメソッドが含まれます。

名前空間

System

Test のメソッド

Test のメソッドは次のとおりです。すべてのメソッドが静的です。

clearApexPageMessages()

Apex テストメソッドの実行中に Visualforce ページのメッセージをクリアします。

署名

public static void clearApexPageMessages()

戻り値

型: void

使用方法

このメソッドは、テストでのみ使用できます。

1@isTest
2    static void clearMessagesTest() {
3        Test.setCurrentPage(new PageReference('/'));
4        ApexPages.addMessage(
5            new ApexPages.Message(ApexPages.Severity.WARNING, 'Sample Warning')
6        );
7        System.assertEquals(1, ApexPages.getMessages().size());
8        Test.clearApexPageMessages();
9        System.assertEquals(0, ApexPages.getMessages().size());
10    }

createStub(parentType, stubProvider)

テストに使用できる Apex クラスのスタブバージョンを作成します。このメソッドは Apex スタブ API に含まれます。System.StubProvider インターフェースで使用してモックフレームワークを作成できます。

署名

public static Object createStub(System.Type parentType, System.StubProvider stubProvider)

パラメーター

parentType
型: System.Type
スタブする Apex クラスの種別。
stubProvider
System.StubProvider
StubProvider インターフェースの実装。

戻り値

型: Object

テストで使用するスタブオブジェクトを返します。

使用方法

createStub() メソッドは System.StubProvider インターフェースと共に動作します。StubProvider インターフェースを実装して、スタブオブジェクトの動作を定義します。続いて、createStub() メソッドを使用して、スタブオブジェクトを作成します。スタブオブジェクトでメソッドを呼び出すと、StubProvider インターフェースの handleMethodCall() メソッドがコールされ、スタブメソッドの動作が実行されます。

enableChangeDataCapture()

Apex テストでこのメソッドを使用して、サポートされるすべての変更データキャプチャエンティティに対して変更イベント通知が生成されるようにします。テストの開始部分で、DML 操作の実行と Test.getEventBus().deliver(); のコールを行う前にこのメソッドをコールします。

署名

public static void enableChangeDataCapture()

戻り値

型: void

使用方法

enableChangeDataCapture() メソッドにより、[変更データキャプチャ] の [設定] で選択されたエンティティに関係なく、Apex テストで変更イベントトリガーを起動できます。enableChangeDataCapture() メソッドは、[設定] で選択されたエンティティには影響しません。

enqueueBatchJobs(numberOfJobs)

非操作コンテンツのある指定した数のジョブをテストコンテキストキューに追加します。最初にジョブを 5 つまでテスト一括処理キューに入れ、それ以降のジョブはテスト Flex キューに配置します。テスト Flex キューのジョブが最大許容数の 100 件を超えると、制限の例外が発生します。

署名

public static List<Id> enqueueBatchJobs(Integer numberOfJobs)

パラメーター

numberOfJobs
型: Integer
キューに追加するテストジョブの数。

戻り値

型: List<Id>

キューに追加されたテストジョブの ID のリスト。

使用方法

このメソッドを使用してテスト時間を短縮します。テストに組織の実際の一括処理ジョブを使用する代わりに、このメソッドを使用して一括処理ジョブのキューへの追加をシミュレーションします。enqueueBatchJobs(numberOfJobs) を使用する方が、実際の一括処理ジョブをキューに追加するより迅速です。

getEventBus()

テスト行動イベントバスブローカーのインスタンスを返します。これで Apex テストでプラットフォームイベントまたは変更イベントメッセージを操作できます。たとえば、Test.getEventBus().deliver() をコールして、イベントメッセージを配信できます。

署名

public static EventBus.TestBroker getEventBus()

戻り値

型: EventBus.TestBroker

テストイベントバスのブローカー。

使用方法

Test.getEventBus().deliver()Test.startTest()Test.stopTest() のステートメントブロックで囲みます。

1Test.startTest();
2// Create test events
3// ...
4// Publish test events with EventBus.publish()
5// ...
6// Deliver test events
7Test.getEventBus().deliver();
8// Perform validation 
9// ...
10Test.stopTest();

getFlexQueueOrder()

テストコンテキスト Flex キュー内のジョブの ID の順序付きリストを返します。インデックスが 0 のジョブは、次に実行予定のジョブです。このメソッドは、@IsTest(SeeAllData=true) アノテーションが付加されていても、テストコンテキストの結果のみを返します。

署名

public static List<Id> getFlexQueueOrder()

戻り値

型: List<Id>

テストの Flex キュー内にあるジョブの ID の順序付きリスト。

getStandardPricebookId()

組織内の標準価格表の ID を返します。

署名

public static Id getStandardPricebookId()

戻り値

型: Id

標準価格表の ID。

使用方法

このメソッドでは、テストで組織データを照会できるかどうかに関係なく、組織内の標準価格表の ID を返します。デフォルトでは、@isTest(SeeAllData=true) アノテーションが付加されていない限り、テストで組織データを照会することはできません。

標準価格で価格表エントリを作成するには、標準価格表の ID が必要です。このメソッドを使用して標準価格表 ID を取得すれば、テストで価格表エントリを作成できます。

次の例では、価格表エントリのテストデータをいくつか作成します。この例のテストメソッドは、標準価格表 ID を取得し、その ID を使用して標準価格で商品の価格表エントリを作成します。次に、テストはカスタム価格表を作成し、このカスタム価格表の ID を使用して、カスタム価格の価格表エントリを追加します。

1@isTest
2public class PriceBookTest {
3    // Utility method that can be called by Apex tests to create price book entries.
4    static testmethod void addPricebookEntries() {
5        // First, set up test price book entries.
6        // Insert a test product.
7        Product2 prod = new Product2(Name = 'Laptop X200', 
8            Family = 'Hardware');
9        insert prod;
10        
11        // Get standard price book ID.
12        // This is available irrespective of the state of SeeAllData.
13        Id pricebookId = Test.getStandardPricebookId();
14        
15        // 1. Insert a price book entry for the standard price book.
16        // Standard price book entries require the standard price book ID we got earlier.
17        PricebookEntry standardPrice = new PricebookEntry(
18            Pricebook2Id = pricebookId, Product2Id = prod.Id,
19            UnitPrice = 10000, IsActive = true);
20        insert standardPrice;
21        
22        // Create a custom price book
23        Pricebook2 customPB = new Pricebook2(Name='Custom Pricebook', isActive=true);
24        insert customPB;
25        
26        // 2. Insert a price book entry with a custom price.
27        PricebookEntry customPrice = new PricebookEntry(
28            Pricebook2Id = customPB.Id, Product2Id = prod.Id,
29            UnitPrice = 12000, IsActive = true);
30        insert customPrice;
31        
32        // Next, perform some tests with your test price book entries.
33    }
34}

invokeContinuationMethod(controller, request)

テストメソッド内で指定されたコントローラーと継続のコールバックメソッドを呼び出します。

署名

public static Object invokeContinuationMethod(Object controller, Continuation request)

パラメーター

controller
型: Object
継続要求を呼び出すコントローラークラスのインスタンス。
request
型: Continuation
コントローラークラスのアクションメソッドから返される継続。

戻り値

型: Object

継続コールバックメソッドの応答。

使用方法

継続をテストするには、Test.setContinuationResponse メソッドと Test.invokeContinuationMethod メソッドを使用します。テストコンテキストでは、継続のコールアウトは外部サービスに送信されません。これらのメソッドを使用することで、擬似応答を設定でき、ランタイムから継続コールバックメソッドがコールされ擬似応答が処理されます。

Test.invokeContinuationMethod をコールする前に、Test.setContinuationResponse をコールします。Test.invokeContinuationMethod をコールすると、継続に関連付けられたコールバックメソッドがランタイムで実行されます。コールバックメソッドでは、Test.setContinuationResponse で設定された擬似応答が処理されます。

isRunningTest()

現在実行中のコードが、テストメソッドに含まれているコードによってコールされた場合、true を返します。その他の場合は、false を返します。テストからコールされたかどうかに応じて異なるコードを実行する必要がある場合に、このメソッドを使用します。

署名

public static Boolean isRunningTest()

戻り値

型: Boolean

loadData(sObjectToken, resourceName)

指定した静的リソース .csv ファイルから、指定した sObject 型のテストレコードを挿入し、挿入された sObject のリストを返します。

署名

public static List<sObject> loadData(Schema.SObjectType sObjectToken, String resourceName)

パラメーター

sObjectToken
型: Schema.SObjectType
テストレコードを挿入する sObject 型。
resourceName
型: String
読み込むテストレコードを含む .csv ファイルに対応する静的リソース。この名前は大文字と小文字を区別しません。

戻り値

型: List<sObject>

使用方法

このメソッドをコールする前に静的リソースを作成する必要があります。静的リソースは、拡張子が .csv のカンマ区切りファイルです。このファイルにはテストレコードの項目名と値が含まれます。ファイルの最初の行に項目名を含め、2 行目以降に値を含める必要があります。静的リソースについての詳細は、Salesforce オンラインヘルプの「静的リソースの定義」を参照してください。

.csv ファイルの静的リソースを作成したら、その静的リソースに MIME タイプが割り当てられます。次の MIME タイプがサポートされています。
  • text/csv
  • application/vnd.ms-excel
  • application/octet-stream
  • text/plain

newSendEmailQuickActionDefaults(contextId, replyToId)

QuickAction.QuickActionDefaultsHandler インターフェースを実装するクラスをテストするための新しい QuickAction.SendEmailQuickActionDefaults インスタンスを作成します。

署名

public static QuickAction.SendEmailQuickActionDefaults newSendEmailQuickActionDefaults(ID contextId, ID replyToId)

パラメーター

contextId
型: Id
メールメッセージの親レコード。
replyToId
型: Id
このメールメッセージが返信の場合、前のメールメッセージ ID。

戻り値

型: SendEmailQuickActionDefaults クラス

メールメッセージのクイックアクションに使用されるデフォルト値。

setContinuationResponse(requestLabel, mockResponse)

テストメソッド内の継続 HTTP 要求に対する疑似応答を設定します。

署名

public static void setContinuationResponse(String requestLabel, System.HttpResponse mockResponse)

パラメーター

requestLabel
型: String
継続 HTTP 要求に対応する一意の表示ラベル。この表示ラベルは Continuation.addHttpRequest によって返されます。
mockResponse
型: HttpResponse
Test.invokeContinuationMethod によって返される擬似応答。

戻り値

型: void

使用方法

継続をテストするには、Test.setContinuationResponse メソッドと Test.invokeContinuationMethod メソッドを使用します。テストコンテキストでは、継続のコールアウトは外部サービスに送信されません。これらのメソッドを使用することで、擬似応答を設定でき、ランタイムから継続コールバックメソッドがコールされ擬似応答が処理されます。

Test.invokeContinuationMethod をコールする前に、Test.setContinuationResponse をコールします。Test.invokeContinuationMethod をコールすると、継続に関連付けられたコールバックメソッドがランタイムで実行されます。コールバックメソッドでは、Test.setContinuationResponse で設定された擬似応答が処理されます。

setCreatedDate(recordId, createdDatetime)

テストコンテキスト sObject の CreatedDate を設定します。

署名

public static void setCreatedDate(Id recordId, Datetime createdDatetime)

パラメーター

recordId
型: Id
sObject の ID。
createdDatetime
型: Datetime
sObject の CreatedDate 項目に割り当てる値。

戻り値

型: void

使用方法

データベースの変更はテスト終了時にすべてロールバックされます。このメソッドをテスト実行前に存在していたレコードに対して使用することはできません。また、@isTest(SeeAllData=true) アノテーションのあるメソッドでは setCreatedDate を使用できません。これらのメソッドは組織内のすべてのデータにアクセスできるためです。CreatedDate を将来の値に設定した場合、予期しない結果が生じる可能性があります。このメソッドは、sObject ID と Datetime 値の 2 つのパラメーターを取ります。いずれも null にできません。

次の例のように、CreatedDate を設定する前にテストレコードを挿入します。
1@isTest 
2private class SetCreatedDateTest {
3    static testMethod void testSetCreatedDate() {
4        Account a = new Account(name='myAccount');
5        insert a;
6        Test.setCreatedDate(a.Id, DateTime.newInstance(2012,12,12));
7        Test.startTest();
8        Account myAccount = [SELECT Id, Name, CreatedDate FROM Account 
9                             WHERE Name ='myAccount' limit 1];
10        System.assertEquals(myAccount.CreatedDate, DateTime.newInstance(2012,12,12));
11        Test.stopTest();
12    }
13}

setCurrentPage(page)

コントローラーの現在の PageReference を設定する Visualforce のテストメソッド。

署名

public static Void setCurrentPage(PageReference page)

パラメーター

page
型: System.PageReference

戻り値

型: Void

setCurrentPageReference(page)

コントローラーの現在の PageReference を設定する Visualforce のテストメソッド。

署名

public static Void setCurrentPageReference(PageReference page)

パラメーター

page
型: System.PageReference

戻り値

型: Void

setFixedSearchResults(fixedSearchResults)

固定された検索結果のリストを、テストメソッドで後続のすべての SOSL ステートメントに返されるよう定義します。

署名

public static Void setFixedSearchResults(ID[] fixedSearchResults)

パラメーター

fixedSearchResults
型: ID[]
opt_set_search_results で指定されたレコード ID のリストは、WHERE 句または LIMIT 句に指定されていない場合、通常は SOSL クエリで返される結果を置き換えます。これらの句が SOSL クエリにある場合、固定された検索結果のリストに適用されます。

戻り値

型: Void

使用方法

opt_set_search_results が指定されていない場合、後続のすべての SOSL クエリは結果を返しません。

詳細は、「動的 SOSL」を参照してください。

setMock(interfaceType, instance)

擬似応答モードを設定し、HTTP クラスまたは WSDL から自動生成されたコードを使用してコールアウトが実行されるたびに擬似応答を送信するように、Apex ランタイムに指示します。

署名

public static Void setMock(Type interfaceType, Object instance)

パラメーター

interfaceType
型: System.Type
instance
型: Object

戻り値

型: Void

使用方法

コールアウトを実行するコードが管理パッケージに含まれる場合に疑似コールアウトを行うには、同じパッケージ内のテストメソッドから同じ名前空間を使用して Test.setMock をコールします。

メモ

setReadOnlyApplicationMode(applicationMode)

Salesforce のアップグレードおよびダウンタイム中に参照のみモードをシミュレートするには、Apex テストにおける組織のアプリケーションモードを参照のみに設定します。アプリケーションモードは、Apex テストの各実行が終了するとデフォルトのモードにリセットされます。

署名

public static Void setReadOnlyApplicationMode(Boolean applicationMode)

パラメーター

applicationMode
型: Boolean

戻り値

型: Void

使用方法

getApplicationReadWriteMode() システムメソッドも参照してください。

DML 例外のシミュレーションなど、参照のみモードのテストに無関係の目的で setReadOnlyApplicationMode を使用しないでください。

次の例では、アプリケーションモードを参照のみに設定し、新しい取引先レコードを挿入しようとしています。結果は例外となります。その後、アプリケーションモードはリセットされ、正しく挿入されます。

1@isTest
2private class ApplicationReadOnlyModeTestClass {
3  public static testmethod void test() {
4    // Create a test account that is used for querying later.
5    Account testAccount = new Account(Name = 'TestAccount');
6    insert testAccount;
7
8    // Set the application read only mode.
9    Test.setReadOnlyApplicationMode(true);
10
11    // Verify that the application is in read-only mode.
12    System.assertEquals(
13               ApplicationReadWriteMode.READ_ONLY, 
14               System.getApplicationReadWriteMode());
15
16    // Create a new account object.
17    Account testAccount2 = new Account(Name = 'TestAccount2');
18
19    try {
20      // Get the test account created earlier. Should be successful.
21      Account testAccountFromDb = 
22        [SELECT Id, Name FROM Account WHERE Name = 'TestAccount'];
23      System.assertEquals(testAccount.Id, testAccountFromDb.Id);
24
25      // Inserts should result in the InvalidReadOnlyUserDmlException 
26      // being thrown.
27      insert testAccount2;      
28      System.assertEquals(false, true);
29    } catch (System.InvalidReadOnlyUserDmlException e) {
30      // Expected
31    }        
32    // Insertion should work after read only application mode gets disabled.
33    Test.setReadOnlyApplicationMode(false);
34
35    insert testAccount2;
36    Account testAccount2FromDb = 
37       [SELECT Id, Name FROM Account WHERE Name = 'TestAccount2'];
38    System.assertEquals(testAccount2.Id, testAccount2FromDb.Id);
39  }
40}

startTest()

テストが実際に開始されるときに、テストコードのポイントをマークします。 ガバナ制限をテストする場合にこのメソッドを使用します。

署名

public static Void startTest()

戻り値

型: Void

使用方法

stopTest と共にこのメソッドを使用して、startTest メソッドの後のすべての非同期コールが、アサーションまたはテストを実行する前に実行されるようにすることができます。各テストメソッドは、このメソッドを 1 回のみコールできます。このメソッドの前のすべてのコードを、変数の初期化、データ構造の入力などのために使用する必要があります。これにより、テストを実行するために必要なすべてを設定できます。startTest へのコールの後および stopTest の前に実行するコードはすべて、新しいガバナ制限セットが割り当てられます。

stopTest()

テストが終了するときに、テストコードのポイントをマークします。このメソッドは startTest メソッドと組み合わせて使用します。

署名

public static Void stopTest()

戻り値

型: Void

使用方法

各テストメソッドは、このメソッドを 1 回のみコールできます。stopTest メソッドの後に実行するコードはすべて、startTest がコールされる前に有効だった元の制限が割り当てられます。startTest メソッドの後に実行されたすべての非同期コールはシステムによって収集されます。stopTest を実行する場合、すべての非同期プロセスが同期して実行されます。

startTest ブロックおよび stopTest ブロックでコールされた @future または executeBatch などの非同期コールは、キュー内ジョブ数の制限に含まれません。

メモ

testInstall(installImplementation, version, isPush)

パッケージでのインストール後スクリプトの指定に使用される、InstallHandler インターフェースの実装をテストします。テストは、開発環境のテストイニシエーターとして実行されます。

署名

public static Void testInstall(InstallHandler installImplementation, Version version, Boolean isPush)

パラメーター

installImplementation
型: System.InstallHandler
InstallHandler インターフェースを実装するクラス。
version
型: System.Version
登録者組織にインストールされた既存パッケージのバージョン番号を指定します。
isPush
型: Boolean
(省略可能) アップグレードがプッシュかどうかを指定します。デフォルト値は、false です。

戻り値

型: Void

使用方法

このメソッドでは、テストのインストールが失敗すると実行時例外が発生します。

1@isTest static void test() {
2  PostInstallClass postinstall = 
3    new PostInstallClass();
4    Test.testInstall(postinstall, 
5      new Version(1,0));
6  }

testSandboxPostCopyScript(script, organizationId, sandboxId, sandboxName)

Sandbox のコピーの完了時に実行するスクリプトの指定に使用する SandboxPostCopy インターフェースの実装をテストします。テストは、開発環境のテストイニシエーターとして実行されます。

署名

public static void testSandboxPostCopyScript(System.SandboxPostCopy script, Id organizationId, Id sandboxId, String sandboxName)

パラメーター

script
型: System.SandboxPostCopy
SandboxPostCopy インターフェースを実装するクラス。
organizationId
型: Id
Sandbox 組織 ID
sandboxId
型: Id

SandboxPostCopy スクリプトに指定される Sandbox ID。

sandboxName
型: String
SandboxPostCopy スクリプトに指定される Sandbox の名前。

戻り値

型: void

使用方法

このメソッドでは、テストのインストールが失敗すると実行時例外が発生します。

Salesforce では、このメソッドの代わりに testSandboxPostCopyScript(script, organizationId, sandboxId, sandboxName, isRunAsAutoProcUser) オーバーロードを使用することを推奨しています。isRunAsAutoProcUsertrue の場合、Sandbox の作成時にコピー後タスクで使用されるユーザーアクセス権限と同じ権限で SandboxPostCopy スクリプトをテストします。同じ権限を使用することで、テストで実際のクラスの利用状況をより適切にシミュレーションできるようになり、潜在的な問題を明らかにできます。

メモ

「SandboxPostCopy の実装例」を参照してください。

testUninstall(uninstallImplementation)

パッケージでのアンインストールスクリプトの指定に使用される、UninstallHandler インターフェースの実装をテストします。テストは、開発環境のテストイニシエーターとして実行されます。

署名

public static Void testUninstall(UninstallHandler uninstallImplementation)

パラメーター

uninstallImplementation
型: System.UninstallHandler
UninstallHandler インターフェースを実装するクラス。

戻り値

型: Void

使用方法

このメソッドでは、テストのアンインストールが失敗すると実行時例外が発生します。

1@isTest static void test() {
2  UninstallClass uninstall = 
3    new UninstallClass();
4    Test.testUninstall(uninstall);
5  }