【问题标题】:Finding @Ignore'd tests that are now passing查找正在通过的 @Ignore 测试
【发布时间】:2017-11-22 16:40:30
【问题描述】:

对于开发人员来来往往的规模不错的开源项目,有人可能会在没有意识到其他人不久前提交了禁用的单元测试的情况下修复了错误(例如@Ignore)。我们希望找到被禁用的通过测试,以便我们可以启用它们并更新错误跟踪器、CC 列表以及下游的任何其他内容。

偶尔运行所有@Ignore'd 测试并识别正在通过的测试的最佳方法是什么?我们使用 Java 1.6 和 JUnit4,用 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 注释,以便它们运行。但是,我们需要一种方法来消除失败。

【问题讨论】:

  • 感谢您对主题的精彩概述。

标签: java gradle junit ant junit4


【解决方案1】:

抱歉,这不是解决方案,而是另一种对我有用的替代方案: 我的关键点是不要修改现有的(1000 个)单元测试。所以没有广泛的代码更改。没有新的注释,当然不是暂时的。

我所做的是覆盖 JUnit @Ignore 检测,并通过类路径前置条件使其成为条件:如果列出或禁用了该测试/类,请签入单独的控制文件。这基于包/FQCN/方法名称和正则表达式模式。如果被覆盖,即使它在未更改的原始 JUNit 测试源中仍有 @Ignore 也运行它。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-11
    • 2021-02-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多