亚洲精品久久久中文字幕-亚洲精品久久片久久-亚洲精品久久青草-亚洲精品久久婷婷爱久久婷婷-亚洲精品久久午夜香蕉

更多QQ空间微信QQ好友腾讯朋友复制链接
您的位置:首頁/技術文章
文章詳情頁

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

【字号: 作者:豬豬瀏覽:16日期: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
相關文章:
主站蜘蛛池模板: 国产成人综合一区人人 | 你懂的亚洲 | 日韩一级一片 | 久久精品精品 | 久久久久久亚洲精品不卡 | 国产精品成人一区二区三区 | 国产 网红 喷水 播放 | 欧美亚洲专区 | 麻豆一区二区三区在线观看 | 亚洲毛片| 国产人成精品 | 在线黄色影院 | 国产真实搭讪系列 | 国产综合精品日本亚洲777 | 亚洲黄色在线看 | 丝袜制服国产 | 亚洲欧美日韩精品 | 狠狠色综合久久丁香婷婷 | 拍拍拍无挡视频免费全程1000 | 国产综合成人久久大片91 | 美女视频大全美女视频黄 | 久久精品视频免费播放 | 可以免费看黄色 | 日本大片免a费观看视频+播放器 | 国产精品爽爽影院在线 | 在线麻豆视频 | 色婷婷狠狠 | 国产三级一区 | 美国大黄一片免费看 | 一区二区三区在线免费观看视频 | 国内精品一区二区三区最新 | 欧美一区二区在线视频 | 欧美区国产区 | 国产a毛片清高视频 | 国精产品一区一区三区 | 日韩免费一区二区三区在线 | 欧美一级毛片高清免费观看 | 欧美综合精品 | 国产亚洲综合在线 | 欧美一级在线毛片免费观看 | 亚洲精品久久一区影院 |