API JUnit 4 Get Handle для метода @Test
Используя API JUnit 4, есть ли способ получить дескриптор метода в тестовом классе, который аннотирован @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, но я хотел посмотреть, предоставляет ли API-интерфейс JUnit эту функциональность.
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