2017-06-20 111 views
3

对于一个开发人员来来去去的体面大小的开源项目,有人可能会修复一个bug,而不会意识到其他人一段时间提交了一个禁用的单元测试(la @Ignore) 。我们希望找到被禁用的通过测试,以便我们启用它们并更新错误跟踪器,CC列表以及其他任何下游。寻找正在通过的Ignore'd测试

什么是偶尔运行所有@ Ignore'd测试并确定正在传递的测试的最佳方法?我们在JUnit4中使用Java 1.6,用ant构建我们的项目并转换为gradle。我们使用Jenkins作为CI。

几个想法:

  1. 永久取代我们所有的@Ignore注释与条件忽略 http://www.codeaffine.com/2013/11/18/a-junit-rule-to-conditionally-ignore-tests/

  2. 运行自定义JUnit4类亚军改变@Ignore的行为。 https://stackoverflow.com/a/42520871

  3. 暂时注释掉所有@Ignore注释以便它们运行。但是,我们需要一种方法来否定失败。

+0

感谢您对此主题的不错概述。 –

回答

1

对不起,这不是一个解决方案,而是另一个替代方案,已经为我工作: 我的关键点是,不修改现有的(1000)的单元测试。所以没有宽泛的代码改变。没有新的注释,当然不是暂时的。

我所做的是覆盖JUnit @Ignore检测并通过classpath prepends创建该条件:如果该测试/类已列出或禁用,请单独检查一个控制文件。这是基于包/ FQCN /方法名称和正则表达式模式。如果被覆盖,即使在未更改的原始JUNit测试源中仍然有@Ignore,也可以运行它。

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