我试图环顾四周,但是找不到任何答案,尽管我确定必须有一个答案。
我有一个JAVA测试,其中可能包含多个@test
批注,当我进入@AfterClass
时,我希望能够打印出哪些通过和哪些未通过。>
我发现使用org.junit.runner.RunListener
提到了一些内容,但我认为这行不通,因为我没有主要方法,只是@Before
有没有一种简单的方法可以完成我想要的工作?
答案 0 :(得分:0)
public class TestsWithResultListener {
@Rule
public static CollectResults resultCollector = new CollectResults();
@Test
public void aPassingTest() throws Exception {
assertThat(true, equalTo(true));
}
@Test
public void aFailingTest() throws Exception {
assertThat(true, equalTo(false));
}
@AfterClass
public static void printResults() throws Exception {
System.out.println("=== PASSED ===");
resultCollector.passed.forEach(test -> {
System.out.println(test.getMethod().getName());
});
System.out.println("=== FAILED ===");
resultCollector.failed.forEach(test -> {
System.out.println(test.getMethod().getName());
});
}
private static class CollectResults extends TestWatchman {
private List<FrameworkMethod> passed = new ArrayList<>();
private List<FrameworkMethod> failed = new ArrayList<>();
public void succeeded(FrameworkMethod method) {
passed.add(method);
}
public void failed(Throwable e, FrameworkMethod method) {
failed.add(method);
}
}
}