有没有办法以编程方式将测试添加到 JUnit4 中的测试套件?
在 Junit3 中你可以这样做
TestSuite ts = new TestSuite();
ts.addTestSuite(a.class);
ts.addTestSuite(b.class);
在 JUnit4 中怎么样?
一种方法是使用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。
如果您希望您的测试更多地集成到您的构建中,请扩展套件
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 {
}