アノテーションインターフェース 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
は、テストを有効または無効にするために使用されます。
メタアノテーションサポート
このアノテーションは、カスタム構成アノテーションを作成するためのメタアノテーションとして使用することができます。
必須定数のサマリー
必須要素オプション要素の概要
オプション要素