如何在声纳代码覆盖范围中包含单位和积分测试

时间:2017-06-16 05:35:54

标签: maven sonarqube jacoco cobertura jacoco-maven-plugin

我使用以下命令构建我的maven代码。

编译 -

-DargLine="-DDB_SERVER=localhost -DDB_PORT=5432 -DDB_NAME=sample -DDB_USER=sample -DDB_PASSWORD=sample -DDB_MAX_POOL=10" -Dcom.sample.redis=false clean compiler:compile

单元测试分析 -

DargLine=-DDB_SERVER=localhost -DDB_PORT=1234 -DDB_NAME=sample -DDB_USER=sample -DDB_PASSWORD=sample -DDB_MAX_POOL=10 -Dcom.sample.redis=false -Dcobertura:cobertura-integration-test -Dcobertura.aggregate=false -Dcobertura.report.format=xml integration-test test

使用下面的声纳属性捕获xml以在声纳中发布。

sonar.projectKey=sample
sonar.projectName=sample
sonar.projectVersion=$PipelineId
sonar.modules=admin,client-api,common,om,serviceproviders
sonar.cobertura.reportPath=target/site/cobertura/coverage.xml
sonar.sources=.
sonar.skipPackageDesign=true
sonar.sourceEncoding=UTF-8

作为Multi模块,代码覆盖率仅显示9.4%。我错过了什么。我也没有看到任何错误日志。如何使用Jacoco等覆盖工具实现相同的目标。

SonarQube - Version 5.1.1 - LGPL v3

1 个答案:

答案 0 :(得分:0)

Maven有一个生命周期Maven Lifecycle,其中每个目标都包含之前的目标。例如“test”包括“compile”,“integration-test”包括“test”等。您通常只需要在生命周期的最前面包含目标。例如“mvn test”表示(编译并运行测试)。

我想你想要运行“mvn verify”目标,即编译,运行测试和集成测试,然后运行验证(覆盖检查等)。 Cobertura有一个插件,应该与maven集成并利用各种目标在适当的时间运行它的作品。我猜你是在弄乱cobertura有多个目标并试图将它分解成碎片 - 即覆盖仪器或其他东西。

同样,您可能会发现使用jacoco比使用cobertura更容易。它隐藏了仪器,并且与maven完美地集成在一起。

祝你好运。