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

Newer Version Available

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

IsTest アノテーション

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

メソッドの @IsTest アノテーションは、testMethod キーワードと同じです。Salesforce では、testMethod ではなく @IsTest を使用することをベストプラクティスとして推奨しています。testMethod キーワードは今後のリリースで廃止される可能性があります。

メモ

@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) アノテーションで定義されている場合、SeeAllData=true は、SeeAllData キーワードを明示的に設定していないすべてのテストメソッドに適用されます。
  • @IsTest(SeeAllData=true) アノテーションは、クラスまたはメソッドレベルで適用される場合にデータにアクセスできるようにするために使用します。ただし、含まれているクラスにすでに @IsTest(SeeAllData=true) アノテーションが付加されている場合、メソッドへの @IsTest(SeeAllData=false) アノテーションの付加は無視されます。この場合、そのメソッドは組織のすべてのデータにアクセスできます。メソッドへの @IsTest(SeeAllData=true) アノテーションの付加は、そのメソッドにおいて、クラスの @IsTest(SeeAllData=false) アノテーションよりも優先されます。
  • @IsTest(SeeAllData=true) アノテーションと @IsTest(IsParallel=true) アノテーションは、同じ Apex メソッドで同時に使用することはできません。
この例では、@IsTest(SeeAllData=true) アノテーションを使用してテストクラスを定義する方法を示します。このクラスのすべてのテストメソッドは組織のすべてのデータにアクセスできます。
この 2 番目の例では、テストメソッドに @IsTest(SeeAllData=true) アノテーションを適用する方法を示します。テストメソッドのクラスにはアノテーションが付加されていないため、メソッドがすべてのデータにアクセスできるようにするには、メソッドにアノテーションを付加する必要があります。2 番目のテストメソッドにはこのアノテーションはありません。そのため、テストメソッドでアクセスできるデータはテストメソッドで作成されたデータのみになります。組織の管理に使用するオブジェクト (ユーザなど) にはアクセスできます。

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

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

パッケージのインストールとアップグレード時に実行される、IsTest(OnInstall=true) でアノテーションされたテストは、コードカバー率に反映されません。ただし、パッケージ作成操作中はコードカバー率は追跡され、計算されます。管理パッケージからインストールされた Apex コードは、コードカバー率の組織レベルの要件から除外されるため、影響を受ける可能性はありません。ただし、管理パッケージのテストカバー率を追跡する場合は、コードカバー率の統計が更新されるように、パッケージのインストール���たはアップグレード操作の外側でこれらのテストを再実行する必要があります。パッケージのインストールはコードカバー率の要件によってブロックされません。

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

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

@IsTest(IsParallel=true) アノテーションを使用して、並列実行できるテストクラスを示します。同時テスト数のデフォルト制限は、これらのテストクラスに適用されません。このアノテーションにより、より多くのテストを並列実行できるため、テストクラスをより効率的に実行できます。
@IsTest(IsParallel=true) アノテーションの考慮事項
  • このアノテーションは、並列テストを無効にする設定を上書きします。
  • @IsTest(SeeAllData=true) アノテーションと @IsTest(IsParallel=true) アノテーションは、同じ Apex メソッドで同時に使用することはできません。