国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

超詳細(xì)!手把手教你用 JaCoCo 生成單測覆蓋率報告!

開發(fā) 前端
Surefire 插件主要是運(yùn)行單測,生成單測數(shù)據(jù)。對于 JaCoCo 插件而言,其作用是基于 Surefire 插件去生成可視化的報告。JaCoCo 插件需要基于 Surefire 插件使用,如果去掉 Surefire 插件,JaCoCo 就生成不了報告了。

我們都知道 Spock 是一個單測框架,其特點是語法簡明。但當(dāng)我們使用 Spock 寫了一堆單元測試之后,如何生成對應(yīng)的單測覆蓋率報告呢?一般來說,我們會使用兩個插件來一起完成單測覆蓋率報告的生成,分別是:

  • Maven Surefire Plugin
  • JaCoCo Plugin

其中 Maven Surefire Plugin 是用來在 Maven 的編譯階段運(yùn)行單測代碼,而 JaCoCo 則是用來生成具體的單測覆蓋率報告。本文將新建一個非 Web 項目來演示如何生成 Spock 的單測覆蓋率報告。

初始化項目

這里初始化項目一個普通的 Java 項目,并引入對應(yīng)的 Spock 依賴,如下代碼所示:

<!-- spock 依賴-->
<dependency>
<groupId>org.spockframework</groupId>
<artifactId>spock-core</artifactId>
<version>2.0-M2-groovy-3.0</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-engine</artifactId>
<version>5.6.2</version>
<scope>test</scope>
</dependency>

接著寫一個計算器類,用于演示單測覆蓋率,如下代碼所示:

package tech.shuyi;

public class AdvancedCalculator {
Integer add(int a, int b) {
return a + b;
}

Integer subtract(int a, int b) {
return a - b;
}

Integer multi(int a, int b) {
return a * b;
}

Integer divide(int a, int b) {
return a / b;
}
}

接著在 test.groovy.tech.shuyi 目錄寫一個 Groovy 單測,如下代碼所示:

package tech.shuyi

import spock.lang.Specification

class AdvancedCalculatorTest extends Specification {

def calendar = new AdvancedCalculator()

def "Add"() {
expect: calendar.add(1, 2) == 3
}

def "Substract"() {
expect: calendar.subtract(2, 1) == 1
}

def "Multi"() {
expect: calendar.multi(2, 3) == 6
}

def "Divide"() {
expect: calendar.divide(16, 4) == 4
}
}

接著我們嘗試運(yùn)行一下單測文件,如無異常應(yīng)該是成功的。

引入插件

在這里,我們要引入對應(yīng)的兩個插件,并做一些簡單地配置。

首先,在 pom.xml 文件引入 Surefire 插件配置,如下代碼所示:

<!-- surefire plugin with spock and junit -->
<plugin>
<groupId>org.codehaus.gmavenplus</groupId>
<artifactId>gmavenplus-plugin</artifactId>
<version>1.9.0</version>
<executions>
<execution>
<goals>
<goal>compileTests</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>3.0.0-M7</version>
<configuration>
<!-- 配置單測失敗幾次后停止執(zhí)行 -->
<skipAfterFailureCount>0</skipAfterFailureCount>
<!-- 不允許跳過單測 -->
<skipTests>false</skipTests>
</configuration>
</plugin>

接著引入 JaCoCo Plugin 的配置,如下代碼所示:

<!-- JaCoCo plugin -->
<plugin>
<groupId>org.jacoco</groupId>
<artifactId>jacoco-maven-plugin</artifactId>
<version>0.8.7</version>
<configuration>
<includes>
<include>tech/**/*</include>
</includes>
</configuration>
<executions>
<execution>
<id>pre-test</id>
<goals>
<goal>prepare-agent</goal>
</goals>
</execution>
<execution>
<id>post-test</id>
<phase>test</phase>
<goals>
<goal>report</goal>
</goals>
</execution>
</executions>
</plugin>

生成報告

做好上述報告后,直接執(zhí)行 mvn test? 就可以生成單測覆蓋率報告了。如果沒有什么異常的話,程序會生成單測覆蓋率報告文件,地址為:target/site/jacoco/index.html。

我們使用瀏覽器打開該文件可以瀏覽到單測覆蓋率情況,如下圖所示:

圖片

單測覆蓋率報告

疑問

關(guān)于如何配置這兩個插件的資料很多,但都運(yùn)行不起來。后面我參考了官網(wǎng)的配置,就成功配置好了。

  • Surefire Plugin 官網(wǎng)文檔:Maven Surefire Plugin – Introduction
  • JaCoCo Plugin 官網(wǎng)文檔:JaCoCo - Maven Plug-in

但對于這兩個插件,我還是有一定疑問的,例如:

  • 這兩個插件到底都是啥作用?
  • 是否一定要搭配一起使用?

通過 Surefire 插件官網(wǎng),我們可以大概知道其作用為:在編譯的 test 階段,用于執(zhí)行程序的單元測試,最終生成 txt? 和 xml? 格式的報告,存放地址為 ${basedir}/target/surefire-reports/TEST-*.xml。

由此可見,Surefire 的主要作用還是用于執(zhí)行程序的單測程序,而不是生成報告。當(dāng)然,官網(wǎng)文檔也說了,你可以使用 Maven Surefire Report Plugin 來生成 HTML 格式的報告。我根據(jù)這個文檔(Maven Surefire Report Plugin – Usage)配置了一下 surefire-report 插件,成功地生成 HTML 格式的報告,如下圖所示。

圖片

surefire-report 插件生成的 HTML 報告

可以看到 surefire-report 插件生成的 HTML 報告還是比較簡陋的,跟 JaCoCo 插件生成的相比,顯然后者更加可視化一些。

看到這里,我相信大家應(yīng)該能弄明白前面兩個問題了:

  • 這兩個插件到底都是啥作用?
  • 是否一定要搭配一起使用?

簡單地說,Surefire 插件主要是運(yùn)行單測,生成單測數(shù)據(jù)。對于 JaCoCo 插件而言,其作用是基于 Surefire 插件去生成可視化的報告。JaCoCo 插件需要基于 Surefire 插件使用,如果去掉 Surefire 插件,JaCoCo 就生成不了報告了。

責(zé)任編輯:武曉燕 來源: 樹哥聊編程
相關(guān)推薦

2022-10-19 14:30:59

2021-08-09 13:31:25

PythonExcel代碼

2022-08-04 10:39:23

Jenkins集成CD

2021-03-02 09:05:13

Python

2009-04-22 09:17:19

LINQSQL基礎(chǔ)

2021-02-06 14:55:05

大數(shù)據(jù)pandas數(shù)據(jù)分析

2011-03-28 16:14:38

jQuery

2021-02-04 09:00:57

SQLDjango原生

2018-12-29 09:38:16

Python人臉檢測

2021-08-02 23:15:20

Pandas數(shù)據(jù)采集

2020-03-08 22:06:16

Python數(shù)據(jù)IP

2021-02-02 13:31:35

Pycharm系統(tǒng)技巧Python

2021-12-11 20:20:19

Python算法線性

2012-01-11 13:40:35

移動應(yīng)用云服務(wù)

2021-05-10 06:48:11

Python騰訊招聘

2021-01-21 09:10:29

ECharts柱狀圖大數(shù)據(jù)

2021-01-08 10:32:24

Charts折線圖數(shù)據(jù)可視化

2009-08-27 18:10:58

PHP繪制3D圖形

2021-01-30 10:37:18

ScrapyGerapy網(wǎng)絡(luò)爬蟲

2017-10-29 21:43:25

人臉識別
點贊
收藏

51CTO技術(shù)棧公眾號

在线国产伦理一区| 77thz桃花论族在线观看| 色爱综合区网| 777精品伊人久久久久大香线蕉| 午夜成人影视| 欧美日韩国产一级二级| 男女在线视频| 亚洲视频在线观看视频| 激情小说亚洲| 97人人爽人人喊人人模波多| 日韩欧美天堂| 51精品国产人成在线观看| 日韩视频在线一区二区三区| 亚洲成色www久久网站| 国产成人综合网站| 缴情综合网五月天| 欧美日韩激情网| 高h视频在线播放| 中文字幕欧美日韩| 久久av影院| 日韩美女毛茸茸| 美女被久久久| 日韩欧美不卡在线| 亚洲午夜在线视频| 美女av在线播放| 中日韩午夜理伦电影免费| 国产精品香蕉| 国产精品乱子乱xxxx| 国产伦精一区二区三区| 羞羞在线视频| 欧美日韩国产三级| 日韩精品第二页| 91免费国产网站| 奇米色777欧美一区二区| 国产精品动漫网站| 色综合久久综合网欧美综合网 | 精品日本一区二区三区在线观看| 青青草成人在线观看| 人人妻人人添人人爽欧美一区| 国产精品久久福利| 日本不卡免费播放| 国产女人水真多18毛片18精品视频| 嫩草嫩草嫩草| 日韩欧美你懂的| 欧美三级一区| 99re视频| 国产一区二区看久久| 橘梨纱av一区二区三区在线观看| 色综合久久久久久久| 欧美成人精品一区二区男人小说| 91精品国产91久久久久| 石原莉奈在线亚洲二区| 天天干天天爽天天射| 在线成人av影院| 青青草97国产精品麻豆| 一本一本久久a久久精品综合妖精| 国产精品沙发午睡系列990531| 一级在线视频| 久久精品国产一区二区三区| 欧美国内亚洲| 成人免费看片'免费看| 欧美日韩国产区| 成人黄色毛片| 国产美女精品久久久| 久久久精品国产免大香伊| 91精品国产综合久久久久久豆腐| 日韩电影免费观看在线观看| 亚洲午夜久久| 在线视频不卡一区二区三区| 亚洲综合丁香婷婷六月香| 中文字幕一区久| 99porn视频在线| 亚洲男女毛片无遮挡| 成人全视频在线观看在线播放高清| 久久国产精品久久| 亚洲午夜在线视频| 欧美一区二区三区久久| 欧美三级理论片| 久久久最新网址| 91丨porny丨户外露出| 久久男人天堂| 国产精品国色综合久久| 亚欧色一区w666天堂| 欧美顶级毛片在线播放| 91视频 -- 69xx| 色噜噜狠狠狠综合曰曰曰| 成人免费视频视频| 成人国产精品入口免费视频| 蜜桃网站成人| 午夜视黄欧洲亚洲| 第九色区aⅴ天堂久久香| 精品久久久久久中文字幕2017| 亚洲成年人在线播放| 欧美成人亚洲| 日本成本人片免费观看| 久久激情五月丁香伊人| 成人一级视频在线观看| 两个人看的在线视频www| 久久av免费观看| 狠狠做深爱婷婷久久综合一区| 另类尿喷潮videofree| 免费激情视频在线观看| 欧美人与性动交a欧美精品| 久久久国产午夜精品| 香蕉久久久久久| 美女福利视频在线| 久久影院免费观看| 国产精品视频观看| 香蕉人人精品| 日本在线免费看| 亚洲综合视频一区| 久久精品色欧美aⅴ一区二区| 亚洲精品福利视频网站| 欧美国产亚洲精品| 国内外成人免费在线视频| 奇米影视亚洲狠狠色| 国产午夜精品一区二区三区视频| 国产va免费精品观看精品| 中文字幕永久视频| 日韩免费视频在线观看| 亚洲乱码中文字幕| 午夜久久福利| 18av在线播放| 最近看过的日韩成人| 日韩网站免费观看高清| www亚洲一区| 国产精品一区二区中文字幕| 猛男欧美办公室激情在线| 亚洲永久在线观看| 欧美精品123区| 激情综合网最新| 色猫猫成人app| 欧美h版电影| 欧美精品一区二区三区四区五区| 亚洲摸下面视频| 暴力调教一区二区三区| 欧美精品国产白浆久久久久| 91天堂在线| 免费国产一区| 色综合亚洲精品激情狠狠| 国产精品电影一区二区| 久久久久久久久久久妇女| 成人免费视屏| 丁香花在线影院观看在线播放 | 亚洲精品福利视频| 亚洲三级电影全部在线观看高清| 日韩一级大片| 国产精品中文| 高清一级毛片视频| 国产亚洲欧美一区二区 | 十九岁完整版在线观看好看云免费| 日韩欧美在线观看强乱免费| 久久久久久久一| 欧美一区二区福利在线| 国产精品污污网站在线观看| 日韩综合一区二区| 日韩福利视频一区| 亚洲色图美国十次| 国产不卡视频| 日韩精品视频在线观看视频 | 日韩午夜视频在线| 成年人视频网站在线| 亚洲视频在线观看一区二区三区| 成人影片在线播放| 久久免费精品视频| 亚洲综合在线观看视频| 国产精品av久久久久久麻豆网| 国产高清免费av在线| 久久综合一区| 久久精品青青大伊人av| 欧美激情综合在线| 日韩电影在线免费观看| av一区在线| 国产va在线观看| 国产精品久久久久久久久久久新郎 | www.成人三级视频| 色先锋aa成人| 91一区二区三区在线播放| 日韩最新在线| 国产美女情趣调教h一区二区| 青青青青草视频| 国产亚洲精品美女久久久m| 精品国产91乱码一区二区三区| 久久久欧美精品sm网站| 97精品国产| 精品123区| 三级在线观看| 99久热在线精品视频| 日韩电影免费观看中文字幕| 亚洲人成伊人成综合网小说| 日本视频在线一区| 午夜影院欧美| 丁香花电影在线观看完整版| 亚洲福利精品视频| 一区二区不卡在线| 国产精品久久久久福利| 久久精品色欧美aⅴ一区二区| 3d成人h动漫网站入口| 一区二区三区日本| 国产美女精品一区二区三区|