JUnit 4 API 获取@Test 方法的句柄
JUnit 4 API Get Handle to a @Test Method
使用 JUnit 4 API,有没有办法让 句柄 到测试 class 中用 [=12 注释的方法=]?
这是我目前正在做的事情:
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
中的所有测试。但是,我想要的是在开头指定测试 class 名称 (MyTest.class
) 并在循环中执行以下操作:
- 获取 class 中的下一个
@Test
注释测试。
- 打印详细信息
- 运行 测试(可能使用
Request.method(MyTest.class, "myTestMethod")
我也许可以使用反射来获取方法名称并检查它们是否使用 Test 注释,但想看看 JUnit API 是否已经提供了此功能。
您可以使用 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");
}
}
}
请注意,这是 运行 测试的低效方法,尤其是当您有 class 规则或使用 @BeforeClass
或 @AfterClass
时
使用 JUnit 4 API,有没有办法让 句柄 到测试 class 中用 [=12 注释的方法=]?
这是我目前正在做的事情:
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
中的所有测试。但是,我想要的是在开头指定测试 class 名称 (MyTest.class
) 并在循环中执行以下操作:
- 获取 class 中的下一个
@Test
注释测试。 - 打印详细信息
- 运行 测试(可能使用
Request.method(MyTest.class, "myTestMethod")
我也许可以使用反射来获取方法名称并检查它们是否使用 Test 注释,但想看看 JUnit API 是否已经提供了此功能。
您可以使用 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");
}
}
}
请注意,这是 运行 测试的低效方法,尤其是当您有 class 规则或使用 @BeforeClass
或 @AfterClass