Unit testing 检测提交的单元测试代码覆盖率

Unit testing 检测提交的单元测试代码覆盖率,unit-testing,junit,Unit Testing,Junit,假设我使用的语言是Java,并且我做了一个特定的提交,有没有一种方法可以告诉我提交的代码覆盖率,或者即使它已经完成了?当用户提交到存储库时,我希望有关于提交的多个统计信息,包括特定提交的单元测试覆盖率。这可能吗?是否已经有了这样的工具,或者我需要考虑一些定制的东西 我正在使用Gitblit下托管的Git,我已经看到了Gitblit的钩子机制,因此这只是如何做到这一点的问题。我现在正在解决同样的问题,我提出了这种方法: 我的项目是基于Java和Maven的。它们中的每一个都继承自一个共同的父级

假设我使用的语言是Java,并且我做了一个特定的提交,有没有一种方法可以告诉我提交的代码覆盖率,或者即使它已经完成了?当用户提交到存储库时,我希望有关于提交的多个统计信息,包括特定提交的单元测试覆盖率。这可能吗?是否已经有了这样的工具,或者我需要考虑一些定制的东西


我正在使用Gitblit下托管的Git,我已经看到了Gitblit的钩子机制,因此这只是如何做到这一点的问题。

我现在正在解决同样的问题,我提出了这种方法:

  • 我的项目是基于Java和Maven的。它们中的每一个都继承自一个共同的父级
  • 在公共父pom中,我在集成测试阶段设置了JacocoMaven插件,以计算单元测试覆盖率。生成的报告与源代码一起存储在同一项目中
  • 每次开发人员对源代码管理系统进行提交时,他/她也会提交报告,因此我将查询已完成的每个提交的覆盖率状态
这项工作已经完成并正在发挥作用。我的下一步将是开发一个工具来查询源代码管理系统(在我的例子中是SVN),以获得覆盖率统计信息:按日期、项目,甚至按用户

请注意,Jacoco生成的报告是绝对的,而不是增量的。如果您希望它是增量的(我也希望如此),您必须计算一个报告和上一个报告之间的差异

为了查询SVN,我目前正在使用
org.tmatesoft.svnkit:svnkit:1.3.8


同样的过程也可以应用于其他代码度量:规则遵从性等。

您使用什么作为版本控制系统?Git托管在Gitblitw下,您真正需要的是像Jenkins等这样的持续集成服务器。然后安装插件以可视化构建的覆盖率报告。有很多,如果测试覆盖率下降到某个阈值以下,大多数都应该允许“破坏构建”。你能举一个插件的例子吗?如果代码覆盖率下降,插件会破坏构建吗?jacoco maven插件是否只计算新代码或基于所有现有单元测试的代码覆盖率?关于您提到的第三点,如何查询SVN以获取开发人员的特定报告,或者按日期查询?我的意思是,假设开发人员只提交一个新功能,而不更改现有代码。让我们假设,在提交之前,代码覆盖率为0%,并且提交包含100%的代码覆盖率。jacoco的表现如何,它是涵盖所有代码还是只涵盖新提交的代码?是否有一种基于提交和jacoco报告的方法可以查看特定提交的代码覆盖率?为了获得增量代码覆盖率报告,您使用什么来计算一个jacoco报告与另一个jacoco报告之间的差异?在我的例子中,这是一种简单的计算:减去总值。欢迎使用。尽管如此,您也应该研究连续集成系统,正如kryger所建议的。。。在我的公司里,他们使用声纳来完成此类质量管理任务,但我找不到如何根据用户获取统计数据。。。这就是为什么我必须开发自己的解决方案。