JUnit4のテストスイートにプログラムでテストを追加する方法はありますか?
Junit3ではこれを行うことができます
TestSuite ts = new TestSuite();
ts.addTestSuite(a.class);
ts.addTestSuite(b.class);
JUnit4ではどうですか?
1つの方法は、Request#classes()を使用することです。
public static void main(String[] args) throws Exception {
Request request = Request.classes(new Class<?>[] {Test1.class, Test2.class});
JUnitCore jUnitCore = new JUnitCore();
RunListener listener = new RunListener() {
@Override
public void testFailure(Failure failure) throws Exception {
System.out.println("failure=" + failure);
}
};
jUnitCore.addListener(listener);
jUnitCore.run(request);
}
RunListenerでは、testFailure以外のものをオーバーライドできます。
テストをビルドにさらに統合する場合は、Suiteを拡張します
public static class DynamicSuite extends Suite {
public DynamicSuite(Class<?> klass, RunnerBuilder builder) throws InitializationError {
super(builder, klass, new Class<?>[] {Test1.class, Test2.class});
}
}
使用するコンストラクターは、スイートの呼び出し方法によって異なります。上記はEclipseで機能します。
次に、空のクラスに@RunWith(DynamicSuite.class)
:で注釈を付けます。
@RunWith(DynamicSuite.class)
public class DynamicTestSuite {
}