我有一个简单的JUnit RunListener
,用于检查测试用例是否修改了某些共享状态(否则下一个测试用例可能无法启动预期状态)。
public class SharedStateVerifier extends RunListener {
@Override
protected void testFinished(Description description) throws Exception {
if (sharedStateHasBeenModified()) {
throw new RuntimeException("The test case " + description.getDisplayName()
+ " has modified the shared state");
}
}
}
我已将此监听器添加到maven surefire插件中,并按预期在每个单元测试中针对每个junit测试用例运行。
但是我想知道我是否正确实现了这一点。它似乎会报告第一次失败的测试,但是如果有更多则不会验证这样的测试,这会增加运行测试和修复失败的时间。此外,在测试摘要之后会打印出一个丑陋的堆栈跟踪(我猜想,因为听众是"失败"就maven surefire插件而言。
我可以缓存每个失败并抛出一个错误,在调用testRunFinished
方法时报告所有这些失败。但我真正想要的是向测试运行器本身添加一个错误。
这可能吗?