我需要在JUnit中以不同方式处理失败和传递的测试。但是JUnit RunListener
只有testFinished()
只在测试失败时调用,而testFailed()
只在失败的测试中调用。
有没有办法从RunListener.testFinished()
找出测试结果(fail \ pass)?
另外,我正在研究另一个JUnit类 - TestWatcher
。它有succeeded()
方法。但是我不想使用它,因为我还需要在完成所有测试后执行一些操作(testRunFinished()
中的RunListener
)
答案 0 :(得分:1)
使用RunListener类执行此操作的方法是使用testFailure()方法中的子描述标记失败的测试,然后在testFinished()方法中检查该子描述:
class MyRunListener extends RunListener {
private static final Description FAILED = Description.createTestDescription('failed', 'failed')
@Override
void testFailure(Failure failure) throws Exception {
failure.description.addChild(FAILED)
}
@Override
void testFinished(Description description) throws Exception {
if (description.children.contains(FAILED))
// Process failed tests here...
else
// Process passed tests here...
}
}