如何衡量每个开发人员的Java代码单元测试覆盖率?

5
场景:团队正在使用某种SCM进行Java/Maven/JUnit项目的开发。我们希望增加测试覆盖率,即所有开发人员应该更加深入地测试代码。使用类似SonarQube这样的工具来测量整体测试覆盖率提高是很容易的,但必须按开发人员来做,以便能够识别异常值:测试覆盖率最好的工程师和覆盖率最差的工程师。

你如何回答“开发人员X在最近一个月内修改的代码的测试覆盖率是多少?”这个问题?是否有一种代替的、近似的方法可以更容易地实现?


3
理论上讲,这是可能的。您可以使用代码管理工具的“责任分配”功能来确定哪些开发人员修改了哪些行,并将其与逐行覆盖报告进行比较。但这是一个好主意吗?除非您的团队很大,否则我认为不是。这显示了缺乏信任,虽然有些人可能会背叛这种信任,但最好的开发人员会感到冒犯。更好的代理人是分析实际的漏洞,检查它们是否起源于未覆盖的代码,如果是,那么是谁造成了问题。如果同样的人总是出现这种情况,请悄悄地跟他们说一声。 - biziclop
7
我认为,如果你需要这样的东西,那么你的工作文化已经存在着巨大的问题。你需要的是一个团队感受到这种责任,并共同对项目负责。你想要做的会促成一种责备的文化。 - André Stannek
1
@biziclop,你的“甚至不是他们的”让我想到了一个小补充:了解一下集体代码所有权/共享代码的概念 :-) - André Stannek
1
@AndréStannek 我知道,这就是我使用引号的原因。但关键是:如果人们为他们不修改的代码编写单元测试,不仅覆盖率会更好,而且他们将确切地知道其中的非测试人员是谁。 - biziclop
2
虽然我不赞成以羞辱/责备作为激励手段,但我们在这里使用JaCoCo和ELCEmma +最低代码覆盖率百分比来强制执行单元测试覆盖率。这有点麻烦,确定适当的代码覆盖率水平并不是一项容易的任务,但它有助于发现错误,并促进了单元测试的普及。我们还通过使用CI游戏增加了一些乐趣:https://wiki.jenkins-ci.org/display/JENKINS/The+Continuous+Integration+Game+plugin 至少让事情变得有趣。 - Mark W
显示剩余5条评论
1个回答

2
有一个商业化的开发者驾驶舱插件可以做到这一点,还有其他很棒的功能。

感谢Mithfindel:开发人员驾驶舱似乎正好符合我的需求。然而,每年每个实例7千欧元的价格相当昂贵,因此我会给自己一些时间来接受答案:我希望并期望还有其他实用的方法可以解决这个问题,即使它们不那么优雅。 - Tomislav Nakic-Alfirevic

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接