0

使用 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 是否已经提供了这个功能。

4

1 回答 1

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

于 2015-07-14T02:34:14.837 回答