首页 > 其他分享 >jacoco统计覆盖率

jacoco统计覆盖率

时间:2023-05-24 22:58:40浏览次数:48  
标签:插件 覆盖率 surefire agent maven https jacoco 统计

前言:

本来想快速搞定覆盖率这个的。随便搜了搜博客,想走捷径。

最终发现想弄懂,还是得看官网,才能把东西弄透。

(唉,读英文文档,总是会有点难度的啊。。。选中文博客,真的和玩狼人杀一样。。搜索完挨个试一试。。。

另外中文博客很少有把官方文档详细翻译,或者把东西说透彻的,也许有但不好搜得到。。。所以一个东西看了博客经常还是能跑就行,各种配置都不甚了解)

对于maven 插件。。。需要知道maven 构建的生命周期, 每个插件的 goal,   每个goal 所默认绑定的maven phase。  这个是深入了解所必须的。

 

跳坑经历(大概回忆一下):

最开始参考的大概是  https://www.jianshu.com/p/16e205b1d0d0

按博客里说的,往pom 里加了  jacoco-maven-plugin  , goals 有两个:prepare-agent  和 report

以为就OK了。。结果,mvn clean test 报错, jacoco没有生成执行文件exec:

Skipping JaCoCo execution due to missing execution data file.

后面找了一圈参考这个博客,解决了。

https://blog.csdn.net/qq_34770694/article/details/123008841

大致意思就是,Surefire 配置破坏 JaCoCo 代理。  (argLine 默认会被surefire 覆盖了,所以jacoco要单独指定参数名)

然后,加入 maven-surefire-plugin   同时 在配置里加上了 <argLine>-Xmx256M ${jacocoArgLine}</argLine>
                    

最后这两个插件的整体配置,大致如下:

<plugin>
    <groupId>org.jacoco</groupId>
    <artifactId>jacoco-maven-plugin</artifactId>
    <!--    <version>0.8.3</version>  -->
    <version>0.6.5.201403032054</version>
    <configuration>
        <includes>
            <include>com/**/*</include>
        </includes>
    </configuration>
    <executions>
        <execution>
            <id>pre-test</id>
            <goals>
                <goal>prepare-agent</goal>
            </goals>
            <configuration>
                <propertyName>jacocoArgLine</propertyName>
            </configuration>
        </execution>
        <execution>
            <id>post-test</id>
            <phase>test</phase>
            <goals>
                <goal>report</goal>
            </goals>
            <configuration>
                <dataFile>target/jacoco.exec</dataFile>
                <outputDirectory>target/jacoco-ut</outputDirectory>
            </configuration>
        </execution>
    </executions>
</plugin>
<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-surefire-plugin</artifactId>
    <version>2.9</version>
    <configuration>
        <argLine>-Xmx256M ${jacocoArgLine}</argLine>
        <skip>false</skip>
        <testFailureIgnore>false</testFailureIgnore>
        <includes></includes>
        <excludes>
            <!-- 由于测试controller类需要启动auth应用进行登录请求,故剔除 -->
            <exclude>**/controller/*ControllerTest.java</exclude>
        </excludes>
    </configuration>
</plugin>

 

主要的要点,就是 jacoco 其实是个生成 javaagent 代理才能统计到代码执行的覆盖率,而jacoco 本身是不管测试的。

surefire 才是跑测试的插件, 默认就包含在maven中,会执行所有 *Test.java 等测试。。。 

所以这两个插件都需要配合使用。。。。

 

用 jacoco 插件生成  适当的 javaagent 参数,存放在 ${jacocoArgLine}  参数中,传递给 surefire 插件。 

然后surefire 跑测试的时候,才能带上jacoco 的插桩参数。。。

 

 

 

相关资料参考:

讲的很全面,对单元测试 和 集成测试 分开了讲,  虽然初步看容易看不懂。。。因为配置太长了。。

https://juejin.cn/post/6844903999473188877

Stack Overflow  对于没有生成jacoco  的数据文件的原因

https://stackoverflow.com/questions/18107375/getting-skipping-jacoco-execution-due-to-missing-execution-data-file-upon-exec

jacoco 官网,对 prepare-agent 这个goal的文档

https://www.eclemma.org/jacoco/trunk/doc/prepare-agent-mojo.html

 jetty 启动如何使用 javaagent

https://docs.appdynamics.com/appd/23.x/latest/en/application-monitoring/install-app-server-agents/java-agent/install-the-java-agent/agent-installation-by-java-framework/jetty-startup-settings

 

标签:插件,覆盖率,surefire,agent,maven,https,jacoco,统计
From: https://www.cnblogs.com/tidus5/p/17429777.html

相关文章

  • 统计得分小于K的子数组数目
    一个数组的分数定义为数组之和乘以数组的长度1.前缀和+二分classSolution{public:longlongcountSubarrays(vector<int>&nums,longlongk){//注意是正整数数组intn=nums.size();longlongres=0;vector<longlong>pr......
  • ps vs top:CPU占用率统计的两种不同方式
    如何计算CPU占用率?简单来说,进程的CPU占用率指的是CPU有多少时间花费在了运行进程上。在Linux系统里,进程运行的时间是以jiffies[1]统计的,通过计算jiffies*HZ,就可以得到进程消耗的CPU时间,再除以CPU的总时间,就可以得到进程的CPU占用率:jiffies*HZ/total_time。p......
  • MySQL数据库统计常用语句
    1、查看所有数据库容量大小selecttable_schemaas'数据库',sum(table_rows)as'记录数',sum(truncate(data_length/1024/1024,2))as'数据容量(MB)',sum(truncate(index_length/1024/1024,2))as'索引容量(MB)'frominformation_schema.tablesgro......
  • OA 统计宣传品SQL
    旧SELECTb.fd_tjrASid,CONVERT(VARCHAR(10),h.doc_create_time,112)ascreatetime,i.fd_login_nameASusercode,c.fd_nameASxm,k.fd_nameaspost,b.fd_shrASshr,CONVERT(nvarchar(100),CAST(b.fd_shmobileASdecimal(38,0)))......
  • 数量统计aggregate
    比如统计某个会员有多少条留言?deffollow_num(self):num=Guestbook.objects.filter(user=self.pk,status=True).aggregate(c=Count('user__membername'))returnnum['c'] ......
  • m异构蜂窝网络的K-Tier下行链路的matlab性能仿真,对比网络Voronoi图,覆盖率等
    1.算法仿真效果matlab2022a仿真结果如下:       2.算法涉及理论知识概要       蜂窝网络正在从精心规划的一组大型塔式基站(BSs)对异构基础设施元素的非常规部署,通常还包括微、微微和以及分布式天线。在本文中,我们为下行链路开发易于处理、灵活和精确的......
  • 百度统计
    百度统计数据管理平台网站分析基于脚本的统计,统计访客的浏览等行为可以获取点击、响应等数据并方便展现缺点:无法统计网络爬虫的信息以下为网站分析工具的JavaScript收集数据流程图:浏览量pv:页面浏览量PV(pageview),用户每打开一次页面就被记录1次访问次数:连续半小时,算一......
  • 【泛微】流程节点时效统计SQL
    selectrb.requestid,rb.`REQUESTNAME`,r2.LASTNAME,c.isremark,cast(CONCAT(RECEIVEDATE,'',RECEIVETIME)asdatetime)'接收时间',cast(CONCAT(OPERATEDATE,'',OPERATETIME)asdatetime)'处理时间',cast(CONCAT(firstviewdate,&#......
  • 【Python】数据分析与可视化实践:收支日统计数据可视化的实现
    Python数据分析与可视化实践:收支日统计数据可视化的实现Author:萌狼蓝天Date:2023-5-7数据读入与基本处理上图是原始数据的一部分,存放于excel中,首先使用pd读入数据。读入数据后,删除不是收入,也不是支出的行。#读取数据datas=pd.read_excel("账单.xlsx",sheet_name=0)#......
  • Linux 中 shell 脚本实现根据gff统计每一个基因的转录本数目
     001、生成基因名称的列表awk-F"\t"'$3=="gene"&&$NF~/gene=/{print$NF}'chr1.gff|sed's/\(.*\)\(gene=[^;]\+\)\(.*\)/\2/'|sort|uniq>gene.list 002、 ......