Как получить результаты теста в @AfterClass - PullRequest
0 голосов
/ 14 октября 2019

Я пытался осмотреться, но не смог найти никаких ответов, хотя я уверен, что должен быть один.

У меня есть тест JAVA, который может иметь несколько @test аннотацийи когда я доберусь до @AfterClass, я хочу иметь возможность распечатать, какие из них пройдены, а какие не пройдены.

Я нашел что-то, упомянутое с использованием org.junit.runner.RunListener, но я не думаю, что это сработаетпотому что у меня нет основного метода, просто @Before

Есть ли простой способ сделать то, что я ищу?

1 Ответ

0 голосов
/ 14 октября 2019
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);
        }
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...