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) 并在循环中执行以下操作:

我也许可以使用反射来获取方法名称并检查它们是否使用 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