电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁技術文章
文章詳情頁

在idea中使用JaCoCo插件統計單元測試覆蓋率的實現

瀏覽:33日期:2024-07-30 15:49:52

在后臺工程師開發完新代碼交給QA進行測試時,軟件測試人員一般都會要求后臺開發對單元測試的覆蓋率達到一定的標準;例如我們的標準是分支覆蓋率達到50%以上,函數覆蓋率達到50%以上。

在idea中查看覆蓋率挺簡單的,idea中支持三種插件來查看覆蓋率,每種插件統計明細各有千秋,分別是idea自帶插件、JaCoCo、Emma。

在idea中打開一個測試類,點擊右上角“Edit Configurations”按鈕,如下圖所示:

在idea中使用JaCoCo插件統計單元測試覆蓋率的實現

然后會彈出一個框,左側菜單欄顯示JUnit欄目,右邊我們選擇“Code Coverage'選項卡,下面有一個”choose coverage runner“下拉菜單,默認是idea自帶的,我們可以切換成其他的(只不過需要在pom中配置一下),如下圖所示:

在idea中使用JaCoCo插件統計單元測試覆蓋率的實現

idea默認自帶的插件,統計出來的覆蓋率只包含classes、method、line,不太詳細,不能滿足我們的要求;所以一般使用JaCoCo插件來統計,我們切換成JaCoCo插件以后,緊接著在maven的pom文件中這樣配置:

(1)添加依賴

<dependency> <groupId>org.jacoco</groupId> <artifactId>jacoco-maven-plugin</artifactId> <version>0.8.2</version></dependency>

(2)配置plugins

<plugin> <groupId>org.jacoco</groupId> <artifactId>jacoco-maven-plugin</artifactId> <version>0.8.2</version> <configuration> <destFile>target/coverage-reports/jacoco-unit.exec</destFile> <dataFile>target/coverage-reports/jacoco-unit.exec</dataFile> <includes> <include>**/service/**</include> <include>**/controller/**</include> <!--<include>**/service/impl/*.class</include>--> </includes> <!-- rules里面指定覆蓋規則 --> <rules> <rule implementation='org.jacoco.maven.RuleConfiguration'> <element>BUNDLE</element> <limits> <!-- 指定方法覆蓋到50% --> <limit implementation='org.jacoco.report.check.Limit'> <counter>METHOD</counter> <value>COVEREDRATIO</value> <minimum>0.50</minimum> </limit> <!-- 指定分支覆蓋到50% --> <limit implementation='org.jacoco.report.check.Limit'> <counter>BRANCH</counter> <value>COVEREDRATIO</value> <minimum>0.50</minimum> </limit> <!-- 指定類覆蓋到100%,不能遺失任何類 --> <limit implementation='org.jacoco.report.check.Limit'> <counter>CLASS</counter> <value>MISSEDCOUNT</value> <maximum>0</maximum> </limit> </limits> </rule> </rules> </configuration> <executions> <execution> <id>jacoco-initialize</id> <goals> <goal>prepare-agent</goal> </goals> </execution> <!--這個check:對代碼進行檢測,控制項目構建成功還是失敗--> <execution> <id>check</id> <goals> <goal>check</goal> </goals> </execution> <!--這個report:對代碼進行檢測,然后生成index.html在 target/site/index.html中可以查看檢測的詳細結果--> <execution> <id>jacoco-site</id> <phase>package</phase> <goals> <goal>report</goal> </goals> </execution> </executions> </plugin>

如果你想使用idea自帶的插件,查看簡單的覆蓋率數據,可以直接在測試類上右鍵點擊”Run ‘xxxxxTest’ with Coverage',如下圖所示:

在idea中使用JaCoCo插件統計單元測試覆蓋率的實現

當JaCoCo插件配置好以后,要獲得 JaCoCo的統計數據,就要執行mvn install 命令。執行完以后,target/site/jacoco/目錄下會生成一個index.html文件,這是統計數據總覽頁面,可以在瀏覽器打開查看,如下圖所示:

在idea中使用JaCoCo插件統計單元測試覆蓋率的實現

由于我們在pom文件的plugin里面配置了rule規則和check 目標,所以在覆蓋率不滿足的情況下,mvn install是不會成功的,并且會報錯:

在idea中使用JaCoCo插件統計單元測試覆蓋率的實現

另一個需要注意的是我在rule中配置的規則,有的是 COVEREDRATIO,有的是MISSEDCOUNT,這說明有的統計的是覆蓋率,有的統計的是丟失率(也即未覆蓋到的),你可別看錯了。

配置JaCoCo插件一定注意和JDK版本的對應關系,如果你用的是jdk1.8,則插件一定要用最新版,要不然會報如下錯誤:

Caused by: java.lang.RuntimeException: Class java/util/UUID could not be instrumented. at org.jacoco.agent.rt.internal_5d10cad.core.runtime.ModifiedSystemClassRuntime.createFor(ModifiedSystemClassRuntime.java:138) at org.jacoco.agent.rt.internal_5d10cad.core.runtime.ModifiedSystemClassRuntime.createFor(ModifiedSystemClassRuntime.java:99) at org.jacoco.agent.rt.internal_5d10cad.PreMain.createRuntime(PreMain.java:51) at org.jacoco.agent.rt.internal_5d10cad.PreMain.premain(PreMain.java:43) ... 6 moreCaused by: java.lang.NoSuchFieldException: $jacocoAccess at java.lang.Class.getField(Class.java:1542) at org.jacoco.agent.rt.internal_5d10cad.core.runtime.ModifiedSystemClassRuntime.createFor(ModifiedSystemClassRuntime.java:136) ... 9 moreFATAL ERROR in native method: processing of -javaagent failedException in thread 'main'

補充:Intellij IDEA run coverage之覆蓋率測試

一.選擇覆蓋率報表工具

在idea中使用JaCoCo插件統計單元測試覆蓋率的實現

二.運行測試用例

在idea中使用JaCoCo插件統計單元測試覆蓋率的實現

三.查看覆蓋率報表

在idea中使用JaCoCo插件統計單元測試覆蓋率的實現

四.下載查看報表

點擊這個

在idea中使用JaCoCo插件統計單元測試覆蓋率的實現

勾選open

在idea中使用JaCoCo插件統計單元測試覆蓋率的實現

查看報表

在idea中使用JaCoCo插件統計單元測試覆蓋率的實現

以上為個人經驗,希望能給大家一個參考,也希望大家多多支持好吧啦網。如有錯誤或未考慮完全的地方,望不吝賜教。

標簽: IDEA
相關文章:
主站蜘蛛池模板: 行业分析:提及郑州火车站附近真有 特殊按摩 ?2025实地踩坑指南 新手如何避坑不踩雷 | 上海皓越真空设备有限公司官网-真空炉-真空热压烧结炉-sps放电等离子烧结炉 | 高低温万能试验机-复合材料万能试验机-馥勒仪器 | 三防漆–水性三防漆–水性浸渍漆–贝塔三防漆厂家 | 陕西自考报名_陕西自学考试网 | 有机肥设备生产制造厂家,BB掺混肥搅拌机、复合肥设备生产线,有机肥料全部加工设备多少钱,对辊挤压造粒机,有机肥造粒设备 -- 郑州程翔重工机械有限公司 | 哈希余氯测定仪,分光光度计,ph在线监测仪,浊度测定仪,试剂-上海京灿精密机械有限公司 | 硬度计,金相磨抛机_厂家-莱州华煜众信试验仪器有限公司 | BESWICK球阀,BESWICK接头,BURKERT膜片阀,美国SEL继电器-东莞市广联自动化科技有限公司 | 一体化污水处理设备-一体化净水设备-「山东梦之洁水处理」 | 专业甜品培训学校_广东糖水培训_奶茶培训_特色小吃培训_广州烘趣甜品培训机构 | 网站建设-高端品牌网站设计制作一站式定制_杭州APP/微信小程序开发运营-鼎易科技 | 卫生纸复卷机|抽纸机|卫生纸加工设备|做卫生纸机器|小型卫生纸加工需要什么设备|卫生纸机器设备多少钱一台|许昌恒源纸品机械有限公司 | HEYL硬度计量泵-荧光法在线溶解氧仪-净时测控技术(上海)有限公司 | 谷梁科技| 防爆大气采样器-防爆粉尘采样器-金属粉尘及其化合物采样器-首页|盐城银河科技有限公司 | 抓斗式清污机|螺杆式|卷扬式启闭机|底轴驱动钢坝|污水处理闸门-方源水利机械 | 青岛侦探_青岛侦探事务所_青岛劝退小三_青岛调查出轨取证公司_青岛婚外情取证-青岛探真调查事务所 | 水性漆|墙面漆|木器家具漆|水漆涂料_晨阳水漆官网 | TYPE-C厂家|TYPE-C接口|TYPE-C防水母座|TYPE-C贴片-深圳步步精 | 脱硝喷枪-氨水喷枪-尿素喷枪-河北思凯淋环保科技有限公司 | 杜甫仪器官网|实验室平行反应器|升降水浴锅|台式低温循环泵 | 智能电表|预付费ic卡水电表|nb智能无线远传载波电表-福建百悦信息科技有限公司 | 中央空调温控器_风机盘管温控器_智能_液晶_三速开关面板-中央空调温控器厂家 | 抖音短视频运营_企业网站建设_网络推广_全网自媒体营销-东莞市凌天信息科技有限公司 | 澳门精准正版免费大全,2025新澳门全年免费,新澳天天开奖免费资料大全最新,新澳2025今晚开奖资料,新澳马今天最快最新图库 | 大通天成企业资质代办_承装修试电力设施许可证_增值电信业务经营许可证_无人机运营合格证_广播电视节目制作许可证 | 手持式浮游菌采样器-全排二级生物安全柜-浙江孚夏医疗科技有限公司 | 湖南档案密集架,智能,物证,移动,价格-湖南档案密集架厂家 | 软启动器-上海能曼电气有限公司 真空搅拌机-行星搅拌机-双行星动力混合机-广州市番禺区源创化工设备厂 | HV全空气系统_杭州暖通公司—杭州斯培尔冷暖设备有限公司 | 高温链条油|高温润滑脂|轴承润滑脂|机器人保养用油|干膜润滑剂-东莞卓越化学 | 万师讲师网-优质讲师培训师供应商,讲师认证,找讲师来万师 | 山东太阳能路灯厂家-庭院灯生产厂家-济南晟启灯饰有限公司 | 耐酸泵,耐酸泵厂家-淄博华舜耐腐蚀真空泵| 厌氧工作站-通用型厌氧工作站-上海胜秋科学仪器有限公司 | 数显恒温培养摇床-卧式/台式恒温培养摇床|朗越仪器 | 青岛美佳乐清洁工程有限公司|青岛油烟管道清洗|酒店|企事业单位|学校工厂厨房|青岛油烟管道清洗 插针变压器-家用电器变压器-工业空调变压器-CD型电抗器-余姚市中驰电器有限公司 | 吹田功率计-长创耐压测试仪-深圳市新朗普电子科技有限公司 | 回转支承-转盘轴承-回转驱动生产厂家-洛阳隆达轴承有限公司 | 经济师考试_2025中级经济师报名时间_报名入口_考试时间_华课网校经济师培训网站 |