记一次解决maven项目sonarqube中覆盖率一直显示为0的问题.jacoco统计显示.

用了整整三天.QAQ.靠体力一下下试出来的结果.踩了个坑.

一开始,项目的覆盖率显示的是0,单元测试数也没有显示.

首先,想到的是test中的项目包结构目录的问题.

倒不是一定是全的,需要的包的路径结构要完整.

于是调整了test中的包结构,把测试class的命名改为了(原java)Test

项目用的是testng.不知道为啥,junit的我没运行出来单元测试数.

在工程目录,右击选择run with coverage.testng的.(可以为这个容器edit configurations->configuration的package选择要测的那个单元测试包->apply and ok).

修改了错误,使单元测试均可运行.

在右侧有coverage栏,可以看到覆盖率.eg.30%.

记一次解决maven项目sonarqube中覆盖率一直显示为0的问题.jacoco统计显示._第1张图片

这是一个完整项目的pom.xml文件.



    4.0.0

    com.test.testcoverage
    testcoverage
    1.0-SNAPSHOT
    
        UTF-8
    
    
        
            org.testng
            testng
            6.11
            test
        
    

    
        
            
                org.apache.maven.plugins
                maven-surefire-plugin
                2.18.1
            
            
                org.jacoco
                jacoco-maven-plugin
                0.7.9
                
                    
                        
                            prepare-agent
                        
                    
                    
                        report
                        prepare-package
                        
                            report
                        
                    
                
            
            
                org.apache.maven.plugins
                maven-compiler-plugin
                3.5.1
                
                    1.7
                    1.7
                
            
        
    

demo见:(另附链接)https://download.csdn.net/download/level_Tiller/13072686

生成target中的jacoco统计报告,ignore=true,可以看到单元测试中不通的error

mvn clean org.jacoco:jacoco-maven-plugin:prepare-agent install -Dmaven.test.failure.ignore=true

若是这步没问题,或者没别的啥问题,那么在target->site->jacoco中可以看到index.html.在浏览器上打开.可以看到

记一次解决maven项目sonarqube中覆盖率一直显示为0的问题.jacoco统计显示._第2张图片

举个栗子,记一次解决maven项目sonarqube中覆盖率一直显示为0的问题.jacoco统计显示._第3张图片

有红的,有绿的.

按道理推到sonar就可以看到结果了.mvn sonar:sonar -Dsonar.host.url=888888888888 -Dsonar.login=8888888888888

结果,应该是sonarqube中覆盖率为0,单元测试数为423423(举个栗子)

显然没解决.但是好了这么一点.

然后又做了颇多的努力.重点应该就是target下要能看到jacoco.exec

记一次解决maven项目sonarqube中覆盖率一直显示为0的问题.jacoco统计显示._第4张图片

其中一个,不知道是不是靠这个解决的.就是修改的pom文件中的那个plugin.加了个输出位置.includes里面是让jacoco扫描的包路径,这个可以不加,因人而异,自己来吧.

                
                    ${project.build.directory}/jacoco.exec
                    ${project.build.directory}/jacoco.exec
                    
                        **/service/impl/**
                    
                

记一次解决maven项目sonarqube中覆盖率一直显示为0的问题.jacoco统计显示._第5张图片

还有一点忘记说了,target下要有jacoco.exec,如果你的在coverage-reports下,自己弄弄pom,或者将jacoco.exec复制到target下.或者名字不对的话,如jacoco-sshjdhksjhf.exec,把名字啥的重命名一下 .

然后重新mvn clean org.jacoco:jacoco-maven-plugin:prepare-agent install.............

应该就能解决了.

附一张成果图:

记一次解决maven项目sonarqube中覆盖率一直显示为0的问题.jacoco统计显示._第6张图片

你可能感兴趣的:(工作总结,maven,java,单元测试)