これは JUnit ルールで行うことができます。
ここにあなたの質問に特化したブログ投稿全体がありますが、要するに、次のことを行います。
- インターフェイスを実装するクラスを作成し
org.junit.rules.TestRule
ます。このインターフェイスには、次のメソッドが含まれています
Statement apply(Statement base, Description description);
。引数は、実際には、base
呼び出して実行するテストです。メソッドは実際には、それを実行する匿名インスタンスを返します。匿名インスタンスに、テストを実行するかどうかを決定するロジックを追加します。テストを実行する以外は何もしない実装の例については、以下を参照してください。はい、特に単純ではありません。base.execute()
apply()
Statement
Statement
TestRule
- 実装を作成したら
TestRule
、次の行を JUnit テスト クラスに追加する必要があります。
フィールドはpublicでなければならないことに注意してください。
@Rule
public MyTestRuleImpl conditionalTests;
以上です。幸運を祈ります - 先ほど言ったように、少しハックする必要があるかもしれませんが、ブログ投稿でかなりの量が説明されていると思います。それ以外の場合は、インターネット上 (または JUnit ソース コード内) に他の情報があるはずです。
何もしない TestRule 実装の簡単な例を次に示します。
public abstract class SimpleRule implements TestRule {
public Statement apply(final Statement base, final Description description) {
return new Statement() {
public void evaluate() throws Throwable {
try {
base.evaluate();
} catch (Throwable t) {
t.printStackTrace();
}
}
};
}
}