如何从测试运行器获得JUnit测试结果?

时间:2013-11-22 14:31:29

标签: junit junit-runner

我已经使用重写的runChild()方法实现了自己的测试运行器:

public class MyTestRunner extends BlockJUnit4ClassRunner {

  // ...

  @Override
  protected void runChild(FrameworkMethod method, RunNotifier notifier) {
    if (method.getAnnotation(Ignore.class) != null) {
        return;
    }

    // Do some global pre-action
    // ...

    // Runs the passed test case
    super.runChild(method, notifier);

    // Do some global post-action depending on the success of the test case
    // ...
  }

  // ...

}

我重写了这个方法,因为我需要在测试用例执行之前/之后做一些全局的前后动作。后期操作将取决于测试用例执行的失败/成功。如何检索执行结果?

1 个答案:

答案 0 :(得分:0)

我通过在执行runChild()之前注册一个侦听器找到了解决方案:

        // ...

        // Add callback listener to do something on test case success
        notifier.addListener(new RunListener() {
            @Override
            public void testRunFinished(Result result) throws Exception {
                super.testRunFinished(result);
                if (result.getFailureCount() == 0) {
                    // Do something here ...
                }
            }
        });

        // Runs the passed test case
        super.runChild(method, notifier);

        // ...

但有更好的方法吗?