Javaでは、注釈を使用してメソッドを条件付きで実行できますか?
いくつかのシステム プロパティを設定し、そのシステム プロパティに基づいて、実行時にメソッド (具体的には Ant スクリプト ベースの JUnit) を実行するか実行しないかを決定します。
注釈を使用して可能かどうか教えてください。
Javaでは、注釈を使用してメソッドを条件付きで実行できますか?
いくつかのシステム プロパティを設定し、そのシステム プロパティに基づいて、実行時にメソッド (具体的には Ant スクリプト ベースの JUnit) を実行するか実行しないかを決定します。
注釈を使用して可能かどうか教えてください。
Javaで実装できると思いますが、Spring AOPをご覧になることをお勧めします-これがあなたが探しているものだと思います.
テストを @Category でグループ化し、このカテゴリを含めるよう実行に指示できます。
http://alexruiz.developerblogs.com/?p=1711から
public interface FastTests { /* category marker */ }
public interface SlowTests { /* category marker */ }
public class A {
@Category(SlowTests.class)
@Test public void a() {}
}
@Category(FastTests.class})
public class B {
@Test public void b() {}
}
@RunWith(Categories.class)
@IncludeCategory(SlowTests.class)
@ExcludeCategory(FastTests.class)
@SuiteClasses({ A.class, B.class })
public class SlowTestSuite {}
これには、独自のTestRunnerまたはユーザーAOPを実装できます。
Java コンピュータ プログラミング言語の注釈は、Java ソース コードに追加できる構文メタデータの形式です。クラス、メソッド、変数、パラメーター、およびパッケージに注釈を付けることができます。
これを見てください
を拡張して、簡単なカスタム テスト ランナーを作成しBlockJUnit4ClassRunner
ます。そのランナーは、システム プロパティまたは構成ファイルから構成を読み取り、定義されたテストのみを実行します。この (デフォルト!) ランナーのデフォルトの動作はすべてのテストを実行するため、最も簡単な解決策は、選択したメソッドを除外するブラックリストです。
それからただ言う
@RunWith(MyTestRunner.class)
public void TestClass {
// ...
}
getChildren()
実装については、メソッドを上書きするだけで十分です。
@Overwrite
List<FrameworkMethod> getChildren() {
List<FrameworkMethod> fromParent = super.getChildren();
List<FrameworkMethod> filteredList = new ArrayList(filter(fromParent));
return filteredList;
}
FrameworkMethod
フィルターは、プロパティに基づいて作成された「ブラックリスト」に従って、実行する必要があるかどうかをすべてチェックします。