自定义JUnit运行器手动触发RunNotifier,但Maven Failsafe插件没有收到正确数量的测试结果

时间:2017-09-21 05:17:53

标签: java maven junit maven-failsafe-plugin junit-runner

我实现了一个扩展BlockJUnit4ClassRunner的自定义JUnit运行器,可以使用Maven Failsafe插件执行。运行器将测试发送到Java应用程序服务器以运行,然后使用Java序列化接收测试结果。然后,它会手动将测试结果触发到类的RunNotifier方法中给出的run()

这一切都很好,但是当使用Maven Failsafe插件运行时,如果有一个或多个测试失败,插件无法报告正确的测试运行次数;它将始终报告运行的测试数量等于测试失败的次数。即使发送到Result方法的RunNotifier:fireTestRunFinished()对象具有正确的统计信息,也会发生这种情况,因此看起来Failsafe插件不直接监听RunNotifier报告的内容。但是,如果所有测试都通过,那么Failsafe插件会报告正确的测试次数。

我一直在查看Maven插件代码,看起来他们使用TestSetStats对象来记录测试结果。但是,我已经无法进一步理解代码了,JUnit的结果是如何传递给TestSetStats的。有人可以向我解释这个过程吗?

此外,有没有人知道为什么Maven Failsafe插件无法获得正确的测试结果?我知道我提供的信息相当普遍,所以请随时询问具体细节。

0 个答案:

没有答案