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

Newer Version Available

This content describes an older version of this product. View Latest

IsTest アノテーション

アプリケーションのテストに使用するコードのみを含むクラスおよびメソッドを定義するには @isTest アノテーションを使用します。メソッドの @isTest アノテーションは、testMethod キーワードと同じです。@isTest アノテーションでは、括弧で囲まれ空白で区切られた複数の修飾子を使用できます。

testMethod キーワードは非推奨になりました。クラスやメソッドには代わりに @isTest アノテーションを使用します。

メモ

@isTest として定義されたクラスとメソッドは private または public のいずれかと宣言する必要があります。@isTest として定義されたクラスは最上位クラスである必要があります。

@isTest アノテーションで指定されたクラスは、Apex コードの組織内の上限の 6 MB には含まれません。

メモ

次に、2 つのテストメソッドを含む非公開テストクラスの例を示します。

次に、テストデータ作成のユーティリティメソッドを含む公開テストクラスの例を示します。

@isTest として定義されたクラスは、インターフェースまたは列挙値とすることはできません。

公開テストクラスのメソッドは、実行中のテスト、つまり、テストメソッドまたはテストメソッドから呼び出されるコードからのみコールすることができ、テスト以外の要求からコールすることはできません。テストメソッドを実行できるさまざまな方法についての詳細は、「単体テストメソッドの実行」を参照してください。

@IsTest(SeeAllData=true) アノテーション

Salesforce API バージョン 24.0 以降を使用して保存された Apex コードでは、テストクラスおよび個々のテストメソッドに対して、テストが作成していない既存のデータを含む組織のすべてのデータへのアクセス権を付与するには、@isTest(SeeAllData=true) アノテーションを使用します。Salesforce API バージョン 24.0 以降を使用して保存した Apex コードでは、デフォルトで、テストメソッドは組織の既存のデータにアクセスできません。ただし、Salesforce API バージョン 23.0 以前で保存されたテストコードは、引き続き、組織のすべてのデータにアクセスでき、そのデータアクセス権は変わりません。「単体テストの組織データとテストデータの分離」を参照してください。

@IsTest(SeeAllData=true) アノテーションの考慮事項
  • テストクラスが @isTest(SeeAllData=true) アノテーションで定義されている場合、このアノテーションは、テストメソッドが @isTest アノテーションと (非推奨の) testMethod キーワードのどちらを使用して定義されているかにかかわらず、すべてのテストメソッドに適用されます。
  • @isTest(SeeAllData=true) アノテーションは、クラスまたはメソッドレベルで適用される場合にデータにアクセスできるようにするために使用します。ただし、含まれているクラスにすでに @isTest(SeeAllData=true) アノテーションが付加されている場合、メソッドへの @isTest(SeeAllData=false) アノテーションの付加は無視されます。この場合、そのメソッドは組織のすべてのデータにアクセスできます。メソッドへの @isTest(SeeAllData=true) アノテーションの付加は、そのメソッドにおいて、クラスの @isTest(SeeAllData=false) アノテーションよりも優先されます。
この例では、@isTest(SeeAllData=true) アノテーションを使用してテストクラスを定義する方法を示します。このクラスのすべてのテストメソッドは組織のすべてのデータにアクセスできます。
この 2 番目の例では、テストメソッドに @isTest(SeeAllData=true) アノテーションを適用する方法を示します。このクラスはテストメソッドに含まれているけれども、このアノテーションを使用して定義されていないため、テストメソッドがすべてのデータにアクセスできるようにするには、このアノテーションをテストメソッドに適用する必要があります。2 番目のテストメソッドにはこのアノテーションはありません。そのため、テストメソッドでアクセスできるデータはテストメソッドで作成されたデータに加え、組織の管理に使用するオブジェクトのデータになります。組織の管理に使用するオブジェクトの例としてユーザがあげられます。

@IsTest(OnInstall=true) アノテーション

@IsTest(OnInstall=true) アノテーションを使用して、パッケージのインストール時に実行される Apex テストを指定します。このアノテーションは、管理パッケージまたは未管理パッケージのテストで使用されます。このアノテーションを付加したテストメソッドまたはこのアノテーションを含むテストクラスの一部であるメソッドのみが、パッケージのインストール時に実行されます。パッケージのインストールが成功するためには、パッケージのインストール時に実行というアノテーション指定されたテストが正常に終了する必要があります。パッケージのインストール時に失敗したテストをバイパスすることはできなくなりました。このアノテーションが付加されていないテストメソッドまたはクラス、あるいは @isTest(OnInstall=false) または @isTest でアノテーションされたテストメソッドまたはクラスは、インストール時に実行されません。

次に、パッケージのインストール時に実行されるテストメソッドにアノテーションを付加する方法の例を示します。この例の test1 は実行されますが、test2test3 は実行されません。

@IsTest(isParallel=true) アノテーション

@isTest(isParallel=true) アノテーションを使用して、テストクラスを並列実行できること、およびテストクラスが同時テスト数のデフォルト制限に制約されないことを示します。このアノテーションにより、より多くのテストを並列実行できるため、テストクラスをより効率的に実行できます。

このアノテーションは、並列テストを無効にする設定を上書きします。このアノテーションを持たないテストクラスは、同時テスト数のデフォルト制限に制約されます。