sonar接入测试结果
项目执行mvn test指令生成的 测试用例文件在标红位置
将生成的测试用例导入到sonar中
执行命令将测试结果上传到sonarqube中
默认
SONARQUBE_TOKEN=22e813fd70f53cac585ced071058a79fa2a91ff6
#执行测试,把默认位置的测试结果上传
mvn clean test sonar:sonar \
-Dmaven.test.failure.ignore=true \ #忽略测试失败
-Dsonar.host.url=http://192.168.132.128:9000 \ #sonar 服务器地址
-Dsonar.login=$SONARQUBE_TOKEN \
-Dsonar.ws.timeout=300 \ # 超时时间
-Dsonar.projectKey=litemall-$USER \
-Dsonar.projectName=litemall-$USER
使用自定义位置上传测试结果
find . -name "surefire*" ./litemall-db/target/surefire-reports
mvn clean test sonar:sonar \
-Dmaven.test.failure.ignore=true \
-Dsonar.host.url=http://192.168.132.128:9000 \ #sonar 服务器地址
-Dsonar.login=$SONARQUBE_TOKEN \
-Dsonar.ws.timeout=300 \
-Dmaven.test.skip=false \
-Dsonar.junit.reportPaths='./litemall-db/target/surefire-reports,./litemall-db/target/surefire-reports'
覆盖率工具
jacoco底层使用asm框架对代码所生成的类文件进行修改,加入统计指令,从而得知代码有没有被覆盖
ASM:所有字节码插桩框架的底层,性能最高,apm框架的核心基础
JavaAssist:简单易用
ByteBuddy、BTrace、 JVM- Sandbox
jacoco mvn插件使用
https://www.jacoco.org/jacoco/trunk/doc/maven.html
jacoco 命令行使用
https://www.jacoco.org/jacoco/trunk/doc/cli.html
手工统计覆盖率
- 对被测应用进行插桩,然后启动on the fly模式javaagent模式可以在内存中动态修改class字节码,不会修改jar包,所以jar包大小不变offline模式,修改jar包中的class文件,文件会变大
- 执行测试行为
- 导出覆盖率统计结果
- 生成报告
agent下载地址 https://repo1.maven.org/maven2/org/jacoco/org.jacoco.agent/0.8.6/ 5
cli工具下载地址 https://repo1.maven.org/maven2/org/jacoco/org.jacoco.cli/0.8.6/ 2
下载jar到本地服务器
#以on the fly模式启动被测应用
java -javaagent:./org.jacoco.agent-0.8.6-runtime.jar -jar apache-jmeter-5.4.1/bin/ApacheJMeter.jar
#执行后正常结束被测程序会得到覆盖率统计文件,被测应用只要得到执行就可以统计到覆盖率,
可以跟测试用例不在同一个服务器上。
ls jacoco.exec
#生成无源代码的报告
java -jar org.jacoco.cli-0.8.6-nodeps.jar report jacoco.exec --classfiles apache-jmeter-5.4.1/bin/ApacheJMeter.jar --html jacoco_html
#生成有源代码关联的报告
java -jar org.jacoco.cli-0.8.6-nodeps.jar report jacoco.exec --classfiles apache-jmeter-5.4.1/bin/ApacheJMeter.jar --html jacoco_html_src --sourcefiles apache-jmeter-5.4.1_src/apache-jmeter-5.4.1/src/launcher/src/main/java/
动态生成覆盖率
mvn clean \
org.jacoco:jacoco-maven-plugin:0.8.5:prepare-agent \
test \
org.jacoco:jacoco-maven-plugin:0.8.5:report \
-Dmaven.test.failure.ignore=true \
-Dmaven.test.skip=false
覆盖率导入sonarqube 默认路径
mvn sonar:sonar \
-Dsonar.host.url=http://sonarqube.ceshiren.com:9000 \
-Dsonar.login=$SONARQUBE_TOKEN \
-Dsonar.ws.timeout=300 \
-Dsonar.projectKey=litemall-core-$USER \
-Dsonar.projectName=litemall-core-$USER
生成jacoco的覆盖率报告
上传报告到sonar
### 覆盖率导入sonarqube
默认路径
```
mvn sonar:sonar \
-Dsonar.host.url=http://sonarqube.ceshiren.com:9000 \
-Dsonar.login=$SONARQUBE_TOKEN \
-Dsonar.ws.timeout=300 \
-Dsonar.projectKey=litemall-core-$USER \
-Dsonar.projectName=litemall-core-$USER
```
自定义路径
```
SONARQUBE_HOST=http://sonarqube.ceshiren.com:9000
sonar-scanner \
-Dsonar.host.url=$SONARQUBE_HOST \
-Dsonar.login=$SONARQUBE_TOKEN \
-Dsonar.projectKey=litemall_$USER \
-Dsonar.projectName=litemall_$USER \
-Dsonar.sources=$(echo **/src | sed 's# #,#g') \
-Dsonar.java.binaries="**/target" \
-Dsonar.junit.reportPaths=$(find . -name "surefire-reports" | xargs | sed 's# #,#g') \
-Dsonar.coverage.jacoco.xmlReportPaths="**/jacoco/jacoco.xml"
pom文件加入jacoco插件
本文暂时没有评论,来添加一个吧(●'◡'●)