これらは私のテストケースです
class Mother {
@Before
public void setUp() {
if (!this.getClass().isAnnotatedWith("Version20")) { // pseudo code
/*
* stop this test without failing!
*/
}
// further setup
}
}
@Version20
class Child extends Mother {
@Test
public void test() {
// run only when Version == 20
}
}
失敗したりassertTrue(false)したりせずに、母親の@BeforeメソッドでChildのテストを停止することは可能ですか?
編集:私はもっと多くのバージョン@ Version19、@ Version18などを持っています。私のソフトウェアはconfigfileを読み込んで結果を出力しています。いくつかのテストは特別なバージョンにのみ適用されます。小さなテストがたくさんあり、コードの重複が嫌いなので、テストメソッド内でバージョンチェックを行いたくありません。
私は尋ねた同様の質問を事前に-結果は、あなたが使用できるということでしたAssume
に基づいてテスト無効にするには、クラスのメソッドを実行時(一方のチェックを@Ignore
静的な状態です)。
つまり、特定の注釈に基づいてそれらを常に無効にしている場合は、実際に実行時にこれを行う必要はないようです。単純にクラスに注釈を付ける@Ignore
だけでなく、@Version20
仕事をするだろう、と間違いなく明確になります。
テストが「1.0モード」で実行されている場合にのみ無視しているのではないかと思いますが、その場合はランタイムイントロスペクションであり、次のような方法でこれを行うことができます。
@Before
public void setUp() {
if (!this.getClass().isAnnotatedWith("Version20")) {
final String version = System.getProperty("my.app.test.version");
org.junit.Assume.assumeTrue(version.equals("2.0"));
}
}
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加