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

如何衡量每个开发人员的Java代码单元测试覆盖率?,java,maven,junit,code-coverage,sonarqube,Java,Maven,Junit,Code Coverage,Sonarqube,场景:一个团队使用某种SCM处理Java/Maven/JUnit项目。我们希望增加测试覆盖率,这意味着所有开发人员都应该更密集地测试代码。使用SonarQube之类的工具来衡量总体测试覆盖率的提高是很容易的,但是您需要按照每个开发人员来做,以便能够识别异常值:测试覆盖率最好的工程师和覆盖率最差的工程师 您将如何回答“开发者X在上个月修改的代码的测试覆盖率是多少?”这个问题?是否有一个替代的、近似的度量方法可以更容易地遵循?有一个商业开发者座舱插件可以做到这一点,加上其他漂亮的特性。理论上这应该是

场景:一个团队使用某种SCM处理Java/Maven/JUnit项目。我们希望增加测试覆盖率,这意味着所有开发人员都应该更密集地测试代码。使用SonarQube之类的工具来衡量总体测试覆盖率的提高是很容易的,但是您需要按照每个开发人员来做,以便能够识别异常值:测试覆盖率最好的工程师和覆盖率最差的工程师


您将如何回答“开发者X在上个月修改的代码的测试覆盖率是多少?”这个问题?是否有一个替代的、近似的度量方法可以更容易地遵循?

有一个商业开发者座舱插件可以做到这一点,加上其他漂亮的特性。

理论上这应该是可能的,您可以使用SCM的
功能来确定哪些行是由哪个开发人员修改的,并将其与逐行覆盖率报告进行比较。但这是个好主意吗?除非你的团队很大,否则我不这么认为。这表明缺乏信任,虽然有些人可能会背叛这种信任,但你最好的开发人员会感到被冒犯。一个更好的代理可以是分析实际的bug,检查它们是否源于未发现的代码,如果是,谁是罪魁祸首。在我看来,如果你需要这样的东西,你的工作文化已经有很大的问题了。你想要的是一个团队,这个团队能感受到这样的压力,并共同承担项目的全部责任。你想做的事促进了一种责备的文化。@AndréStannek的观点很好,与其专注于是谁做的,不如鼓励人们为甚至不是“他们”的代码编写单元测试。@biziclop Your
甚至不是“他们”的
让我有一点补充:阅读关于集体代码所有权/共享代码:-)虽然我不赞成羞辱/指责作为动机,但我们在这里使用JaCoCo和ELCEmma+夜间构建的最低代码覆盖率来加强单元测试覆盖率。这有点痛苦,决定适当级别的代码覆盖率并不是一件容易的事情,但它有助于发现bug,并总体上促进单元测试。我们还通过使用CI游戏增加了一点乐趣:至少让事情变得有趣。谢谢Mithfindel:开发者座舱似乎正是我所需要的。然而,它是相当昂贵的,每年每个实例7千欧元,所以我会在接受答案之前给它时间:我希望并期待有其他切实可行的方法,即使它们不是那么优雅。