我实现了一个扩展BlockJUnit4ClassRunner
的自定义JUnit运行器,可以使用Maven Failsafe插件执行。运行器将测试发送到Java应用程序服务器以运行,然后使用Java序列化接收测试结果。然后,它会手动将测试结果触发到类的RunNotifier
方法中给出的run()
。
这一切都很好,但是当使用Maven Failsafe插件运行时,如果有一个或多个测试失败,插件无法报告正确的测试运行次数;它将始终报告运行的测试数量等于测试失败的次数。即使发送到Result
方法的RunNotifier:fireTestRunFinished()
对象具有正确的统计信息,也会发生这种情况,因此看起来Failsafe插件不直接监听RunNotifier报告的内容。但是,如果所有测试都通过,那么Failsafe插件会报告正确的测试次数。
我一直在查看Maven插件代码,看起来他们使用TestSetStats对象来记录测试结果。但是,我已经无法进一步理解代码了,JUnit的结果是如何传递给TestSetStats
的。有人可以向我解释这个过程吗?
此外,有没有人知道为什么Maven Failsafe插件无法获得正确的测试结果?我知道我提供的信息相当普遍,所以请随时询问具体细节。