Testクラスを指定された回数実行できるようにしたい。クラスは次のようになります:
@RunWith(Parameterized.class)
public class TestSmithWaterman {
private static String[] args;
private static SmithWaterman sw;
private Double[][] h;
private String seq1aligned;
@Parameters
public static Collection<Object[]> configs() {
// h and seq1aligned values
}
public TestSmithWaterman(Double[][] h, String seq1aligned) {
this.h = h;
this.seq1aligned = seq1aligned;
}
@BeforeClass
public static void init() {
// run smith waterman once and for all
}
@Test
@Repeat(value = 20) // does nothing
// see http://codehowtos.blogspot.gr/2011/04/run-junit-test-repeatedly.html
public void testCalculateMatrices() {
assertEquals(h, sw.getH());
}
@Test
public void testAlignSeq1() {
assertEquals(seq1aligned, sw.getSeq1Aligned());
}
// etc
}
上記のテストはいずれも失敗する可能性があります(同時実行のバグ-編集:失敗は有用なデバッグ情報を提供します)ので、クラスを複数回実行し、できれば結果を何らかの方法でグループ化できるようにしたいと思います。Repeatアノテーションを試しましたが、これはテスト固有であり(実際には機能しませんでした-上記を参照)、 Junit4に転送できないように見えるRepeatedTest.classに苦労しました-SOで見つけた最も近いものはこれです-しかし明らかにJunit3です。Junit4では、私のスイートは次のようになります。
@RunWith(Suite.class)
@SuiteClasses({ TestSmithWaterman.class })
public class AllTests {}
これを複数回実行する方法がわかりません。 空のオプションでパラメータ化することは実際にはオプションではありません-とにかくパラメータが必要なので
だから私は何度も何度もEclipseでControl+F11を押すのに行き詰まっています
ヘルプ
編集(2017.01.25):誰かが先に進んで、私が明示的に言った受け入れられた答えがここに当てはまらない質問の重複としてこれにフラグを立てました