【问题标题】:SonarQube not correctly displays unit test successSonarQube 未正确显示单元测试成功
【发布时间】:2016-04-19 13:15:02
【问题描述】:

首先:这不是关于 SonarQube 不是显示单元测试成功的问题。这个主题有很多问题和答案,但都没有帮助。

我的设置:在Jenkins 1.644 上使用Maven 3.x 触发的SonarQube 5.2,并带有默认的安全测试。这就是 SonarQube 中的结果:

如您所见,它正确显示所有项目的单元测试成功。选择一个项目使我们能够打包测试成功。在这一点上,它变得越来越奇怪。例如 GUI 包:它说 8,3 % 项目测试成功但 0,0 % 包测试成功。这怎么可能?

我已在 SonarQube 分析所基于的目录 <project dir>/target/surefire-reports 中查找原因。在那里你可以看到三个生成的 .xml 文件/类:

文件中的一些摘录向我们展示了:

Test set: xxx.gui.main.AppConfigurationTest
Tests run: 4, Failures: 0, Errors: 4, Skipped: 0

Test set: xxx.gui.main.ConfigurationHolderTest
Tests run: 7, Failures: 0, Errors: 7, Skipped: 0

Test set: xxx.gui.servlet.XxxHttpServletTest
Tests run: 1, Failures: 0, Errors: 0, Skipped: 0

做一些计算会给你 4 + 7 + 1 = 12 个总测试和 1 / 12(成功/总)= 8,3 %!这就是项目测试成功诞生的地方。

问题是:为什么 SonarQube 中不显示类 xxx.gui.servlet.XxxHttpServletTest(当然测试成功率为 100%)?你有什么想法吗?

【问题讨论】:

    标签: unit-testing sonarqube surefire


    【解决方案1】:

    问题是:为什么 SonarQube 中不显示类 xxx.gui.servlet.J2uHttpServletTest(当然测试成功率为 100%)?你有什么想法吗?

    此视图的目的是查找测试错误/失败的测试类和测试包,以及需要审查/纠正的测试类和测试包。因此,仅显示成功率低于 100% 的测试类。

    以 100% 成功显示所有包/测试类会产生视觉噪音。这是一个好/坏的方法吗?好吧,一旦你理解了这一点,你就知道如何解释这些信息了。

    恕我直言,真正的问题是“显示测试成功的百分比有什么意义?”每个测试类/包的失败测试数量是比 %age 更好的信息,因为您可以使用它来计划操作。

    确实,我不明白为什么知道一个包含 60 个测试的测试类“损坏了 50%”(要修复 30 个测试)比另一个包含 10 个测试的测试类“损坏了 60%”...(6测试来修复。)对我来说,两者都坏了,需要修复,点。数字只能帮助我定义解决问题所需的努力(即要解决的 36 次测试非常明确,不是 50%,也不是 60%...)

    旁注:测试成功百分比是一个“全有或全无”指标。不能选择 99.99% 的测试成功(您的集成构建应该会失败,并且您的代码根本不应该投入生产。)

    【讨论】:

    • 好的,我心里有类似的想法,但不确定。有没有办法配置 SonarQube 如何显示测试成功?我和你一样,详细的测试失败百分比并不重要,但我认为这种表示处于中等领先地位。
    • 我认为没有办法修改这种行为。但是,您仍然可以深入测试错误/失败以及跳过的单元测试(您可以使用 4.5.4 和 5.3 执行此操作,因此没有理由无法使用 5.2 执行此操作)
    猜你喜欢
    • 2015-06-24
    • 2016-10-27
    • 2015-05-06
    • 2017-05-16
    • 1970-01-01
    • 2017-12-11
    • 2014-12-15
    • 1970-01-01
    • 2014-02-21
    相关资源
    最近更新 更多