使TestExecutionListener跳过/忽略测试

时间:2017-07-18 09:33:55

标签: spring junit

我目前正在使用Spring TestExecutionListener来处理我的测试类中的自定义注释。根据一些外部情况,我想忽略测试。

目前,我在beforeTestClassbeforeTestMethod内使用假设来实现此功能。但不幸的是,它在日志中创建了一个包含堆栈跟踪的警告,该堆栈跟踪非常嘈杂。

以某种方式可以以编程方式忽略测试(可能使用TestContext)吗?

1 个答案:

答案 0 :(得分:2)

我认为您可以尝试扩展默认测试运行器并提供isIgnored方法的自定义实现:

public class CustomRunner extends BlockJUnit4ClassRunner {
    public CustomRunner(Class<?> c) throws initializationError {
        super(c);
    }

    @Override
    protected boolean isIgnored(FrameworkMethod child) {
        if(shouldIgnore()) {
           return true;
        }
        return super.isIgnored(child);
    }

    private boolean shouldIgnore() {
        /* some custom criteria */
    }
}

此处,base implementation忽略了具有@Ignore注释的测试,但您可以提供自己的忽略条件实现。