JUnit 4 API获取@Test方法的句柄

时间:2015-07-09 14:18:04

标签: junit junit4 junit-runner

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

1 个答案:

答案 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