说明
在SonarQube的官网中,发现6.0之后的版本再也不支持cobertura。因此决定尝试使用JaCoCo来进行单元测试,统计单元测试覆盖率。下载最新的版本,以下:java
软件名称apache |
版本app |
Jenkinsmaven |
Ver.2.60.1单元测试 |
SonarQube测试 |
6.4ui |
Sonar-Scannerspa |
2.8code |
Mavenxml |
3.3 |
具体安装就很少说了。
项目POM配置
<build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <configuration> <source>1.5</source> <target>1.5</target> </configuration> </plugin> </plugins> </build> <profiles> <profile> <id>sonar-coverage</id> <activation> <activeByDefault>true</activeByDefault> </activation> <build> <pluginManagement> <plugins> <plugin> <groupId>org.jacoco</groupId> <artifactId>jacoco-maven-plugin</artifactId> <version>0.7.9</version> <configuration> </configuration> </plugin> </plugins> </pluginManagement> <plugins> <plugin> <groupId>org.jacoco</groupId> <artifactId>jacoco-maven-plugin</artifactId> <configuration> <append>true</append> </configuration> <executions> <execution> <id>agent-for-ut</id> <goals> <goal>prepare-agent</goal> </goals> </execution> <execution> <id>agent-for-it</id> <goals> <goal>prepare-agent-integration</goal> </goals> </execution> <execution> <id>jacoco-site</id> <phase>verify</phase> <goals> <goal>report</goal> </goals> </execution> </executions> </plugin> </plugins> </build> </profile> </profiles>
若是不想在项目中添加,在jenkins中配置maven时,添加以下语句,效果同样
clean org.jacoco:jacoco-maven-plugin:prepare-agent install -Dmaven.test.failure.ignore=true package
Jenkins配置
在maven配置后添加SonarQube Scanner的配置,分析配置以下:
sonar.projectKey=sonar:multipartTest sonar.projectName=multipartTest sonar.projectVersion=1.0 sonar.modules=multipart-base,multipart-core multipart-core.sonar.projectName=multipart-core multipart-base.sonar.projectName=multipart-base sonar.sources=src/main/java sonar.tests=src/test/java sonar.sourceEncoding=UTF-8 sonar.language=java sonar.java.binaries=target/classes sonar.java.coveragePlugin=jacoco sonar.coverage.exclusions=**/entity/**
其中,项目有多个模块时使用sonar.mudules,若是为普通项目能够删除该部分配置:
sonar.modules=multipart-base,multipart-core multipart-core.sonar.projectName=multipart-core multipart-base.sonar.projectName=multipart-base
须要注意如下几个的配置:
sonar.java.binaries 若是该配置路径错误,则项目的单元测试覆盖率为0。以前使用过sonar.binaries配置,结果无效,仍没有单元测试覆盖率。
sonar.coverage.exclusions 排除单元测试的文件路径,配置规则见SonarQube平台中配置-->排除下的说明,以下: