使用JUnit 4 API,有没有办法让句柄到测试类中用@Test
注释的方法?
这是我目前正在做的事情:
JUnitCore core = new JUnitCore();
Request request = Request.aClass(MyTest.class);
Result result = core.run(request);
if(result.wasSuccessful())
System.out.println("SUCCESS"); // or do something else
此代码将在MyTest
中运行所有测试。但是,我想要的只是在开头指定测试类名称(MyTest.class
)并在循环中执行以下操作:
@Test
注释测试。Request.method(MyTest.class, "myTestMethod")
我可以使用反射来获取方法名称并检查它们是否使用Test进行注释,但是想看看JUnit API是否已经提供了此功能。
答案 0 :(得分:1)
您可以使用TestClass
:
public void runTests(Class<?> clazz) {
TestClass testClass = new TestClass(MyTest.class);
List<FrameworkMethod> tests = testClass.getAnnotatedMethods(
Test.class);
for (FrameworkMethod m : tests) {
String methodName = m.getName();
Request request = Request.method(clazz, methodName);
JUnitCore core = new JUnitCore();
Result result = core.run(request);
if (result.wasSuccessful())
System.out.println(m + ": SUCCESS");
}
}
}
请注意,这是一种运行测试的低效方式,特别是如果您有类规则或使用@BeforeClass
或@AfterClass