1

Javaでは、注釈を使用してメソッドを条件付きで実行できますか?

いくつかのシステム プロパティを設定し、そのシステム プロパティに基づいて、実行時にメソッド (具体的には Ant スクリプト ベースの JUnit) を実行するか実行しないかを決定します。

注釈を使用して可能かどうか教えてください。

4

5 に答える 5

1

Javaで実装できると思いますが、Spring AOPをご覧になることをお勧めします-これがあなたが探しているものだと思います.

于 2012-12-12T08:51:39.493 に答える
1

テストを @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 {}
于 2012-12-12T08:52:45.523 に答える
0

これには、独自のTestRunnerまたはユーザーAOPを実装できます。

于 2012-12-12T08:51:30.500 に答える
0

Java コンピュータ プログラミング言語の注釈は、Java ソース コードに追加できる構文メタデータの形式です。クラス、メソッド、変数、パラメーター、およびパッケージに注釈を付けることができます。

これを見てください

于 2012-12-12T08:51:35.190 に答える
0

を拡張して、簡単なカスタム テスト ランナーを作成し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フィルターは、プロパティに基づいて作成された「ブラックリスト」に従って、実行する必要があるかどうかをすべてチェックします。

于 2012-12-12T09:07:38.973 に答える