首先:这不是关于SonarQube 而不是显示单元测试成功。有很多问题&这个主题的答案,但他们没有帮助。
我的设置:在SonarQube 5.2
Maven 3.x
上使用Jenkins 1.644
使用<project dir>/target/surefire-reports
进行默认的surefire测试。这就是SonarQube的结果:
如您所见,它可以正确显示所有项目的单元测试成功。选择项目会带来我们的测试成功。在这一点上,它变得奇怪。例如GUI包:它表示项目测试成功率为8.3%,但包测试成功率为0,0%。怎么可能?
我在SonarQube分析所基于的目录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
中寻找原因。在那里你可以看到三个生成的.xml文件/类:
文件中的一些摘录显示了我们:
$0 > $1
做一些计算可以得到4 + 7 + 1 = 12个总测试,1/12(成功/总计)= 8,3%!这就是项目测试成功的地方。
问题是:为什么不在SonarQube中显示类xxx.gui.servlet.XxxHttpServletTest(当然测试成功100%)?你有什么想法吗?
答案 0 :(得分:2)
问题是:为什么SonarQube中没有显示类xxx.gui.servlet.J2uHttpServletTest(当然测试成功100%)?你有什么想法吗?
此视图的目的是查找测试类和测试包,其中包含错误/失败的测试,并且需要进行检查/更正。因此,只显示成功率低于100%的测试类。
显示100%成功的所有包/测试类会产生视觉噪音。这是一个好/坏的方法吗?好吧,一旦你理解了这一点,就会知道如何解释这些信息。
恕我直言,真正的问题是“显示测试成功年龄的重要性是什么?”每个测试类/包的失败测试数量是比%age更好的信息,因为您可以使用它来计划操作。实际上,我不明白为什么知道60级测试的测试类“50%被破坏”(30次测试需要修复)比10次测试更好的测试是“60%破坏”...(6测试修复。)对我来说,两个都破了,需要修复,点。数字应该只能帮助我定义解决问题所需的工作量(即36个测试要解决的问题是cristal clear,而不是50%,也不是60%......)
旁注:测试成功%age是“全有或全无”指标。 99.99%的测试成功不是一个选择(您的集成构建应该失败,并且您的代码根本不应该投入生产。)