【问题标题】:Program to find ignored junits查找被忽略的junit的程序
【发布时间】:2012-02-24 06:32:26
【问题描述】:

有没有一个程序可以让我找到所有被忽略的junit?

我的意思是,我见过使用@Ignore 的单元测试和使用ignore_testFoo()xtestBar()xxtestBar1() 之类的方法名称的测试,这些都被忽略了,有时很难找到。 我可以 grep 处理这些情况,但我想知道是否有一个应用程序可以自动找到这些情况。

我尝试使用 cobertura 来获得对 junit 的覆盖,查看哪些方法正在执行,哪些没有被执行,并挑选出错误的单元测试。

我只是想知道是否有程序或其他方法可以在不破坏某些东西的情况下获取此信息。

【问题讨论】:

    标签: java unit-testing testing junit


    【解决方案1】:

    静态分析工具可以很好地为您服务。 Checkstyle 是其中一个不错的选择,它有很长的 modules 列表,最坏的情况是您可以轻松编写自己的模块来验证您需要的任何编码约定。

    您将为其定位或创建一个模块,然后执行以查找任何不符合要求的代码。

    编辑 PMD 看起来是处理这项任务的绝佳选择。它实际上带有一个已经内置的set of JUnit rules,并且非常容易组合规则或创建新规则。

    【讨论】:

    • 最坏的情况我会修改这个 PMD 规则:pmd.sourceforge.net/rules/java/… 也接受公共方法,并搜索 @Ignore 注释。
    • 感谢您发布该链接,我之前没有听说过 PMD。有趣的是,他们为 JUnit 准备了一堆规则 - pmd.sourceforge.net/rules/java/junit.html
    • 请注意,这些 JUnit 规则中的大多数适用于 JUnit 3,而不是 JUnit 4
    • 我会写一个 PMD 规则。 @MAtthewFarwell- 我明白这一点,但开始为 junit4 编写规则并没有什么坏处
    【解决方案2】:

    通过 grep 对 java 测试文件使用 junit3 检测被忽略的测试应该很容易。查找与 test 和括号匹配但方法名称不是以 test 开头的所有行。

    对于junit4,你可以 * 通过扩展默认的测试运行器来实现你自己的测试运行器,打印出被忽略的测试 * 构建一个加载测试类的小应用程序,通过自省获取所有声明的方法,打印出那些标记为忽略的。

    可能有一个工具可以做到这一点,甚至一些跑步者已经做到了,但实际上如果你真的需要这些工具,从头开始可能需要几个小时。

    【讨论】:

      猜你喜欢
      • 2019-03-07
      • 2011-02-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-05-22
      • 2022-01-22
      相关资源
      最近更新 更多