アノテーションインターフェース IfProfileValue
 このアノテーションのコンテキストでは、プロファイルという用語はデフォルトで Java システムプロパティを指します。ただし、セマンティクスは、カスタム ProfileValueSource を実装することで変更できます。構成された ProfileValueSource が、宣言された name() に一致する value() を返す場合、テストが有効になります。それ以外の場合、テストは無効になり、事実上無視されます。
@IfProfileValue は、クラスレベル、メソッドレベル、その両方で適用できます。@IfProfileValue のクラスレベルの使用箇所は、そのクラスまたはそのサブクラス内のメソッドのメソッドレベルの使用箇所よりも優先されます。具体的には、テストがクラスレベルとメソッドレベルの両方で有効になっている場合に有効になります。@IfProfileValue がないということは、テストが暗黙的に有効になっていることを意味します。これは、@Ignore の存在が常にテストを無効にすることを除いて、JUnit の @Ignore アノテーションのセマンティクスに類似しています。
サンプル
SystemProfileValueSource を ProfileValueSource 実装(デフォルトで構成されている)として使用する場合、次のように Oracle の JavaVM でのみ実行するようにテストメソッドを構成できます。
 @IfProfileValue(name = "java.vendor", value = "Oracle Corporation")
 public void testSomething() {
     // ...
 }'OR' セマンティクス
 あるいは、複数の values() の OR セマンティクスを使用して @IfProfileValue を構成することもできます。次のテストは、unit-tests  または integration-tests のいずれかの値で "test-groups" プロファイルに対して ProfileValueSource が適切に構成されている場合に有効になります。この機能は、TestNG のテストグループのサポートおよび JUnit のテストカテゴリの実験的サポートに似ています。
 @IfProfileValue(name = "test-groups", values = { "unit-tests", "integration-tests" })
 public void testWhichRunsForUnitOrIntegrationTestGroups() {
     // ...
 }@IfProfileValue 対 @Profile
@IfProfileValue アノテーションと @Profile アノテーションはどちらもプロファイルを含みますが、直接関連しているわけではありません。@Profile には、Environment で構成された Bean 定義プロファイルが含まれます。一方、@IfProfileValue は、テストを有効または無効にするために使用されます。
メタアノテーションサポート
このアノテーションは、カスタム構成アノテーションを作成するためのメタアノテーションとして使用することができます。
- 必須定数のサマリー必須要素
- オプション要素の概要オプション要素