我已经使用重写的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
// ...
}
// ...
}
我重写了这个方法,因为我需要在测试用例执行之前/之后做一些全局的前后动作。后期操作将取决于测试用例执行的失败/成功。如何检索执行结果?
答案 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);
// ...
但有更好的方法吗?