Jenkins集成jacoco收集单元测试覆盖率

2020-02-28

目录

0 整体思路
1 Jenkins创建JacocoIntegrateTestDemo项目
2 配置源码管理
3 配置Build
4 配置构建后操作
5 构建执行,查看代码覆盖率
6 控制台输出

0 整体思路

  1. jenkins安装和全局工具配置见 1 安装版本 2 全局工具配置
  2. 单元测试不需要通过添加javaagent选项启动被测系统和执行ant dump来拉取jacoco.exec,只需在pom.xml设置插件,在被测项目中增加单测代码
    <?xml version="1.0" encoding="UTF-8"?>
    <project name="JacocoDmo" xmlns:jacoco="antlib:org.jacoco.ant" default="jacoco">
    <!--Jacoco 的安装路径-->
    <property name="jacocoantPath" value="D:\software\jacoco\lib\jacocoant.jar"/>
    <!--最终生成 .exec 文件的路径,Jacoco 就是根据这个文件生成最终的报告的-->
    <property name="jacocoexecPath" value=".\target\jacoco.exec"/>
    <!--远程 Tomcat 服务的 ip 地址-->
    <property name="server_ip" value="10.8.116.81"/>
    <!--前面配置的远程 Tomcat 服务打开的端口,要跟上面配置的一样-->
    <property name="server_port" value="6300"/> <!--让 ant 知道去哪儿找 Jacoco-->
    <taskdef uri="antlib:org.jacoco.ant" resource="org/jacoco/ant/antlib.xml">
    <classpath path="${jacocoantPath}" />
    </taskdef> <!--dump 任务:
    根据前面配置的 ip 地址,和端口号,
    访问目标 Tomcat 服务,并生成 .exec 文件。-->
    <target name="dump">
    <jacoco:dump address="${server_ip}" reset="false" destfile="${jacocoexecPath}" port="${server_port}" append="true"/>
    </target>
    </project>
  3. 创建maven项目JacocoIntegrateTestDemo

1 Jenkins创建JacocoIntegrateTestDemo项目

图1 创建maven项目JacocoIntegrateTestDemo

2 配置源码管理

图2 配置源码管理

3 配置Build

图3 配置Build

4 配置构建后操作

图4 配置构建后操作

5 构建执行,查看代码覆盖率

图5 代码覆盖率

6 控制台输出

在 master 上构建 在工作空间 D:\Program Files (x86)\Jenkins\workspace\JacocoUnitTestDemo 中
using credential 904f882b-46cf-42d6-ae43-68639b1b1482
> D:\Program Files\Git\bin\git.exe rev-parse --is-inside-work-tree # timeout=10
Fetching changes from the remote Git repository
> D:\Program Files\Git\bin\git.exe config remote.origin.url git@e.coding.net:Ming8006/jacocodemo.git # timeout=10
Fetching upstream changes from git@e.coding.net:Ming8006/jacocodemo.git
> D:\Program Files\Git\bin\git.exe --version # timeout=10
using GIT_SSH to set credentials
> D:\Program Files\Git\bin\git.exe fetch --tags --force --progress -- git@e.coding.net:Ming8006/jacocodemo.git +refs/heads/*:refs/remotes/origin/* # timeout=10
> D:\Program Files\Git\bin\git.exe rev-parse "refs/remotes/origin/master^{commit}" # timeout=10
> D:\Program Files\Git\bin\git.exe rev-parse "refs/remotes/origin/origin/master^{commit}" # timeout=10
Checking out Revision 06b9139dc9be810a86df0d093e2ab278ad765957 (refs/remotes/origin/master)
> D:\Program Files\Git\bin\git.exe config core.sparsecheckout # timeout=10
> D:\Program Files\Git\bin\git.exe checkout -f 06b9139dc9be810a86df0d093e2ab278ad765957 # timeout=10
Commit message: "build.xml"
> D:\Program Files\Git\bin\git.exe rev-list --no-walk 06b9139dc9be810a86df0d093e2ab278ad765957 # timeout=10
Parsing POMs
Established TCP socket on 53538
[JacocoUnitTestDemo] $ "D:\Program Files\Java\jdk1.8.0_231\/bin/java" -Xms256m -Xmx512m -Dfile.encoding=UTF-8 -cp "D:\Program Files (x86)\Jenkins\plugins\maven-plugin\WEB-INF\lib\maven35-agent-1.13.jar;D:\software\maven\boot\plexus-classworlds-2.6.0.jar;D:\software\maven/conf/logging" jenkins.maven3.agent.Maven35Main D:\software\maven "D:\Program Files (x86)\Jenkins\war\WEB-INF\lib\remoting-3.27.jar" "D:\Program Files (x86)\Jenkins\plugins\maven-plugin\WEB-INF\lib\maven35-interceptor-1.13.jar" "D:\Program Files (x86)\Jenkins\plugins\maven-plugin\WEB-INF\lib\maven3-interceptor-commons-1.13.jar" 53538
<===[JENKINS REMOTING CAPACITY]===>channel started
Executing Maven: -B -f D:\Program Files (x86)\Jenkins\workspace\JacocoUnitTestDemo\pom.xml clean test
[INFO] Scanning for projects...
[INFO]
[INFO] -----------------------< com.example:jacocodemo >-----------------------
[INFO] Building jacocodemo 0.0.1-SNAPSHOT
[INFO] --------------------------------[ jar ]---------------------------------
[INFO]
[INFO] --- maven-clean-plugin:3.0.0:clean (default-clean) @ jacocodemo ---
[INFO] Deleting D:\Program Files (x86)\Jenkins\workspace\JacocoUnitTestDemo\target
[INFO]
[INFO] --- jacoco-maven-plugin:0.8.3:prepare-agent (jacoco-initialize) @ jacocodemo ---
[INFO] argLine set to "-javaagent:D:\\software\\maven\\repo\\m2\\org\\jacoco\\org.jacoco.agent\\0.8.3\\org.jacoco.agent-0.8.3-runtime.jar=destfile=D:\\Program Files (x86)\\Jenkins\\workspace\\JacocoUnitTestDemo\\target\\coverage\\jacoco-unit.exec"
[INFO]
[INFO] --- maven-resources-plugin:3.0.2:resources (default-resources) @ jacocodemo ---
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] Copying 1 resource
[INFO] Copying 0 resource
[INFO]
[INFO] --- maven-compiler-plugin:3.7.0:compile (default-compile) @ jacocodemo ---
[INFO] Changes detected - recompiling the module!
[INFO] Compiling 6 source files to D:\Program Files (x86)\Jenkins\workspace\JacocoUnitTestDemo\target\classes
[INFO] /D:/Program Files (x86)/Jenkins/workspace/JacocoUnitTestDemo/src/main/java/com/example/controller/MathController.java: D:\Program Files (x86)\Jenkins\workspace\JacocoUnitTestDemo\src\main\java\com\example\controller\MathController.java浣跨敤浜嗘湭缁忔鏌ユ垨涓嶅畨鍏ㄧ殑鎿嶄綔銆�
[INFO] /D:/Program Files (x86)/Jenkins/workspace/JacocoUnitTestDemo/src/main/java/com/example/controller/MathController.java: 鏈夊叧璇︾粏淇℃伅, 璇蜂娇鐢� -Xlint:unchecked 閲嶆柊缂栬瘧銆�
[INFO]
[INFO] --- maven-resources-plugin:3.0.2:testResources (default-testResources) @ jacocodemo ---
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] skip non existing resourceDirectory D:\Program Files (x86)\Jenkins\workspace\JacocoUnitTestDemo\src\test\resources
[INFO]
[INFO] --- maven-compiler-plugin:3.7.0:testCompile (default-testCompile) @ jacocodemo ---
[INFO] Changes detected - recompiling the module!
[INFO] Compiling 1 source file to D:\Program Files (x86)\Jenkins\workspace\JacocoUnitTestDemo\target\test-classes
[INFO]
[INFO] --- maven-surefire-plugin:2.21.0:test (default-test) @ jacocodemo ---
[INFO]
[INFO] -------------------------------------------------------
[INFO] T E S T S
[INFO] -------------------------------------------------------
[INFO] Running com.example.service.MathServiceTest
[INFO] Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.08 s - in com.example.service.MathServiceTest
[INFO]
[INFO] Results:
[INFO]
[INFO] Tests run: 1, Failures: 0, Errors: 0, Skipped: 0
[INFO]
[JENKINS] Recording test results
[INFO]
[INFO] --- jacoco-maven-plugin:0.8.3:report (jacoco-site) @ jacocodemo ---
[INFO] Loading execution data file D:\Program Files (x86)\Jenkins\workspace\JacocoUnitTestDemo\target\coverage\jacoco-unit.exec
[INFO] Analyzed bundle 'jacocodemo' with 6 classes
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 6.007 s
[INFO] Finished at: 2020-02-28T16:51:22+08:00
[INFO] ------------------------------------------------------------------------
Waiting for Jenkins to finish collecting data
[JENKINS] Archiving D:\Program Files (x86)\Jenkins\workspace\JacocoUnitTestDemo\pom.xml to com.example/jacocodemo/0.0.1-SNAPSHOT/jacocodemo-0.0.1-SNAPSHOT.pom
channel stopped
[JaCoCo plugin] Collecting JaCoCo coverage data...
[JaCoCo plugin] **/target/coverage/**.exec;**/target/classes;**/src/main/java; locations are configured
[JaCoCo plugin] Number of found exec files for pattern **/target/coverage/**.exec: 1
[JaCoCo plugin] Saving matched execfiles: D:\Program Files (x86)\Jenkins\workspace\JacocoUnitTestDemo\target\coverage\jacoco-unit.exec
[JaCoCo plugin] Saving matched class directories for class-pattern: **/target/classes:
[JaCoCo plugin] - D:\Program Files (x86)\Jenkins\workspace\JacocoUnitTestDemo\target\classes 6 files
[JaCoCo plugin] Saving matched source directories for source-pattern: **/src/main/java:
[JaCoCo plugin] Source Inclusions: **/*.java,**/*.groovy,**/*.kt,**/*.kts
[JaCoCo plugin] Source Exclusions:
[JaCoCo plugin] - D:\Program Files (x86)\Jenkins\workspace\JacocoUnitTestDemo\src\main\java 6 files
[JaCoCo plugin] Loading inclusions files..
[JaCoCo plugin] inclusions: []
[JaCoCo plugin] exclusions: []
[JaCoCo plugin] Thresholds: JacocoHealthReportThresholds [minClass=0, maxClass=0, minMethod=0, maxMethod=0, minLine=0, maxLine=0, minBranch=0, maxBranch=0, minInstruction=0, maxInstruction=0, minComplexity=0, maxComplexity=0]
[JaCoCo plugin] Publishing the results..
[JaCoCo plugin] Loading packages..
[JaCoCo plugin] Done.
[JaCoCo plugin] Overall coverage: class: 17, method: 4, line: 3, branch: 0, instruction: 2, complexity: 4
Finished: SUCCESS

参考

[1] 使用jenkins的jacoco插件快速实现统计单元测试覆盖率

Jenkins集成jacoco收集单元测试覆盖率的更多相关文章

  1. Jenkins集成jacoco收集集成测试覆盖率

    Jenkins集成jacoco收集集成测试覆盖率 2020-02-28 目录 0 整体思路1 安装版本2 全局工具配置3 Jenkins创建JacocoIntegrateTestDemo项目  3.1 ...

  2. Jacoco收集单元测试、集成测试和系统功能测试覆盖率

    Jacoco收集单元测试.集成测试和系统功能测试覆盖率 2020-02-27  目录 1 安装版本2 被测系统代码示例3 收集单元测试覆盖率4 收集集成和功能测试覆盖率 代码覆盖率可在单元测试.系统测 ...

  3. 在jenkins和sonar中集成jacoco(一)--使用jacoco收集单元测试的覆盖率

    之前系统的持续集成覆盖率工具使用的是cobetura,使用的过程中虽然没什么问题,但感觉配置比较麻烦,现在准备改用jacoco这个覆盖率工具来代替它.接下来我介绍一下jenkins配置jacoco,并 ...

  4. jenkins集成python的单元测试

    最近在研究jenkins的集成,然后想把自己写的python工具也用jenkins集成一下 废话少说,来看结构 sparking.py ''' @author: lianying ''' class ...

  5. SonarQube学习(四)- 使用Jenkins集成JaCoCo和SonarQube检查代码测试覆盖率

    一.前言 我始终觉得学习这件事是自己的事,自己会了就是会了,无关于他人,但有点小伤感的是现在的阅读量开始走低. 二.准备 安装Jenkins,请移步<Docker学习(二)- Docker 安装 ...

  6. jacoco + eclipse单元测试覆盖率

    概念 Jacoco:JaCoCo是一个开源的覆盖率工具,它针对的开发语言是java,其使用方法很灵活,可以嵌入到Ant.Maven中:可以作为Eclipse插件,可以使用其JavaAgent技术监控J ...

  7. Android-jacoco代码覆盖率:单元测试覆盖率+功能测试覆盖率

    参考:https://docs.gradle.org/current/dsl/org.gradle.testing.jacoco.tasks.JacocoCoverageVerification.ht ...

  8. 在jenkins和sonar中集成jacoco(三)--使用jacoco收集集成测试的覆盖率

    我们系统使用weblogic做服务器,集成测试框架使用的是junit+selenium. 首先,要把jacoco的jacocoagent.jar包放到部署应用的服务器上,接着在系统服务的JAVA_OP ...

  9. [转载] JaCoCo:分析单元测试覆盖率的利器

    转载自http://www.ibm.com/developerworks/cn/java/j-lo-jacoco/和http://www.cnblogs.com/chenfengmugu/p/4937 ...

随机推荐

  1. 超越队西柚考勤系统--Beta冲刺2

    超越队西柚考勤系统- -beta冲刺2 格式描述 这个作业属于哪个课程 课程链接 这个作业要求在哪里 作业链接 团队名称 超越队(西柚考勤系统) 这个作业的目标 对alpha版本的程序进行改进,代码核 ...

  2. Windows玩转Kubernetes系列2-Centos安装Docker

    接上一章,Windows玩转Kubernetes系列1-VirtualBox安装Centos,我们开始学习如何在Centos中安装Docker 准备 关闭防火墙 防火墙一定要提前关闭,否则在后续安装K ...

  3. LoadRunner参数传递给参数

    需求:使用随机函数时,需要参数化某个参数,并且后面的步骤需要使用这个参数. 方法: lr_save_string 该函数主要是将程序中的常量或变量保存为lr中的参数 lr_eval_string 从参 ...

  4. ICC教程 - Flow系列 - 概念系列 - ECO (理论+实践+脚本分享)

    本文转自:自己的微信公众号<集成电路设计及EDA教程> <ICC教程 - Flow系列 - 概念系列 - ECO (理论+实践+脚本分享)> 这篇推文讲一下数字IC设计中的po ...

  5. 在Navicat新建用户

    1.Ctrl+Q,进入查询,创建表空间. 输入create tablespace test datafile 'D:\Oracle\test.ora' size 1000m; 这里的test为表空间名 ...

  6. shell命令之一天一见:grep

    一. 简介 grep (缩写来自Globally search a Regular Expression and Print)是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来 ...

  7. 在家想自学Java,有C语言底子,请问哪本书适合?

    一.问题剖析 看到这个问题,我想吹水两句再做推荐.一般发出这个疑问都处在初学编程阶段,编程语言都是相通的,只要你领悟了一门语言的"任督二脉",以后你学哪一门语言都会轻易上手.学语言 ...

  8. LeetCode#26 | Remove Duplicates from Sorted Array 删除有序数组中的重复元素

    一.题目 Description Given a sorted array, remove the duplicates in-place such that each element appear ...

  9. 用EFCore的 FluentAPI 方式生成MySql 带注释的数据库表结构

    采用的是net Core 3.1框架下的 的WebAPI项目. 1.  创建ASP.NET Core Web项目  2. 添加NuGet引用包,包如下 Microsoft.EntityFramewor ...

  10. Linux 系统监控工具 atop

    系统监控是运维工作中重要的一环,本文以 atop 工具为例来介绍系统的重要监控项. atop可以使用yum或apt包管理器进行安装.atop man page 中详细说明了 atop 中各监控项含义及 ...