java – 查找正在传递的@ Ignore’d测试

对于一个开发人员来去的大小合适的开源项目,有人可能会修复一个错误而没有意识到其他人曾经提交了一个禁用的单元测试(la @Ignore).我们希望找到已禁用的传递测试,以便我们可以启用它们并更新错误跟踪器,CC列表和其他任何下游.

什么是偶尔运行所有@ Ignore’d测试并识别正在通过的测试的最佳方法?我们正在使用带有JUnit4的Java 1.6,使用ant构建我们的项目并转换为gradle.我们使用Jenkins进行CI.

一些想法:

>使用条件忽略永久替换所有@Ignore注释
http://www.codeaffine.com/2013/11/18/a-junit-rule-to-conditionally-ignore-tests/
>运行一个自定义的JUnit4类运行器,它可以改变@Ignore的行为.
https://stackoverflow.com/a/42520871
>暂时注释掉所有@Ignore注释,以便它们运行.但是,我们需要一种方法来消除失败.

最佳答案 对不起,这不是一个解决方案,而是另一个对我有用的替代方案:

我的关键点是不修改现有的(1000s)单元测试.所以没有广泛的代码更改.没有新的注释,当然不是暂时的.

我所做的是覆盖JUnit @Ignore检测并通过类路径预先设置条件:检查单独的控制文件是否列出或禁用了该测试/类.这基于package / FQCN /方法名称和Regexp模式.如果被覆盖,即使它在未更改的原始JUNit测试源中仍然具有@Ignore,也要运行它.

记录结果,修改控制文件.冲洗并重复.

点赞