是否可以从RunListener.testFinished中获取JUnit中的测试状态?

时间:2016-08-23 09:44:02

标签: java junit

我需要在JUnit中以不同方式处理失败和传递的测试。但是JUnit RunListener只有testFinished()只在测试失败时调用,而testFailed()只在失败的测试中调用。

有没有办法从RunListener.testFinished()找出测试结果(fail \ pass)?

另外,我正在研究另一个JUnit类 - TestWatcher。它有succeeded()方法。但是我不想使用它,因为我还需要在完成所有测试后执行一些操作(testRunFinished()中的RunListener

1 个答案:

答案 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...
  }
}