如何使用来自 Hudson 的 Maven 生成 Cobertura 代码覆盖率报告
Posted
技术标签:
【中文标题】如何使用来自 Hudson 的 Maven 生成 Cobertura 代码覆盖率报告【英文标题】:How to generate Cobertura Code Coverage Report using Maven from Hudson 【发布时间】:2011-01-01 15:17:59 【问题描述】:在我的项目中,我需要使用 maven build 从 Hudson 创建 Cobertura 代码覆盖率报告。 在 Hudson,我添加了 Cobertura Code Coverage 插件。 我需要pom.xml的完整修改步骤。
【问题讨论】:
谨防 Java 7 不兼容!一个可能的[解决方案显示在这里][1]。 [1]:***.com/questions/7010665/… 【参考方案1】:您是否尝试将其添加到您的pom.xml
中的reporting
部分?
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>cobertura-maven-plugin</artifactId>
<configuration>
<formats>
<format>html</format>
<format>xml</format>
</formats>
</configuration>
</plugin>
完整的配置步骤可以在here找到。
【讨论】:
我在我的 pom.xml 中的“wiki.hudson-ci.org/display/HUDSON/Cobertura+Plugin”中的“仅使用配置文件从 hudson 执行 cobertura”部分下添加了配置还在 cobertura-maven-plugin 的“报告”标签下添加了配置但是在从 hudson 执行构建时 - 我收到以下异常 Skipping Cobertura coverage report as build was not UNSTABLE or better ... Finished: FAILURE 我已经在 Hudson 中配置了插件“Publish Cobertura Coverage Report” 我错过了任何步骤配置? 检查您的日志,它应该会显示一些失败消息。在本地结账时运行 mvn site cobertura:cobertura 可能会有所帮助。另外请注意,对我来说,只需运行“cobertura:cobertura”作为目标就足够了,不需要更改 pom(可能是因为上层 pom 已经包含它...)【参考方案2】:Hudson 需要您来生成coverage.xml
文件。要在不更改 pom.xml
的情况下执行此操作,您可以使用:
mvn cobertura:cobertura -Dcobertura.report.format=xml
【讨论】:
在我的系统上,插件的<configuration>
部分不受尊重。但是,当我在目标行中指定上述-Dcobertura.report.format
参数时,它可以工作。感谢 amcknight
有什么方法可以生成关于mvn clean install
命令而不是mvn cobertura:cobertura
的Cobertura 报告,当我将executions
-phase
更改为test
和goal
为cobertura
时,它可以工作,但是它运行了两次测试用例,对此有什么想法吗?
@PRATHAPS,我知道这是一个很晚的评论,但你知道如何解决这个问题吗?您的解决方案和 Johan Norén 的答案都运行了两次测试用例。您是否想过只运行一次测试用例并从该单次测试运行中生成 cobertura 报告?
@Amudhan 我发现它总是会运行两次。但这并不重要,因为它不会影响任何性能,因为测试只会在构建之前运行。后来开始使用 Jacaco
@Amudhan 是的,Jacoco 不会运行两次测试。我们可以实现 Cobertura 所具有的报告和所有其他功能【参考方案3】:
要在打包阶段运行 Cobertura,请执行以下操作
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>cobertura-maven-plugin</artifactId>
<version>2.5.2</version>
<configuration>
<formats>
<format>xml</format>
</formats>
</configuration>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>cobertura</goal>
</goals>
</execution>
</executions>
</plugin>
这是一个 pom 的例子
http://macgyverdev.blogspot.com/2011/04/development-environment-for-google-app.html
以及如何在 Hudson 中集成 http://macgyverdev.blogspot.com/2011/04/hudson-continous-integration-for-google.html
【讨论】:
使用此配置,测试用例运行两次。知道如何修复它以使测试只运行一次,并使用它生成 cobertura 报告吗?【参考方案4】:Cobertura 实际上似乎并不与 hudson 合作。
我有一个执行命令行的项目: mvn 清洁包
构建覆盖率报告生成准确的覆盖率报告,平均覆盖率约为 78% 行和 74% 分支。
在 Hudson 服务器上运行相同的目标会导致覆盖率报告显示 0% 0%。
不幸的是,该插件的 Jira 站点似乎不允许任何人发布问题,因此该问题尚未向团队报告。
【讨论】:
以上是关于如何使用来自 Hudson 的 Maven 生成 Cobertura 代码覆盖率报告的主要内容,如果未能解决你的问题,请参考以下文章
在使用像 Hudson/Jenkins 这样的 CI 工具时,我如何成功地将 Maven 发布插件与 GitHub(或 GitHub 企业)一起使用
使用 Maven、SVN 和 Hudson(jenkins) 发布