提交 1ddfb7e6 编写于 作者: LinuxSuRen's avatar LinuxSuRen

Auto commit by hugo-plugin.

上级 f9be50b1
......@@ -36,7 +36,7 @@
<meta property="og:type" content="website" />
<meta property="og:url" content="https://jenkins-zh.cn/" />
<meta property="og:updated_time" content="2019-05-20T00:00:00&#43;00:00"/>
<meta property="og:updated_time" content="2019-05-22T00:00:00&#43;00:00"/>
<meta itemprop="name" content="Jenkins 中文社区">
<meta itemprop="description" content="">
......@@ -265,22 +265,22 @@ var trackOutboundLink = function(id, url) {
<a href="/event/shenzhen/" class="tile lazyload cover dib f4 ml1 mr4 bg-black relative mw-100 shadow-5">
<img width="400px" height="200px" src="/images/meetup/shenzhen.jpeg"></img>
<a href="/event/beijing-2019-04-20/" class="tile lazyload cover dib f4 ml1 mr4 bg-black relative mw-100 shadow-5">
<img width="400px" height="200px" src="/images/meetup/cloud-native-community-day.jpeg"></img>
</a>
<a href="/event/shanghai-2019-06/" class="tile lazyload cover dib f4 ml1 mr4 bg-black relative mw-100 shadow-5">
<img width="400px" height="200px" src="/images/meetup/shanghai.jpeg"></img>
<a href="/event/beijing-2019-11/" class="tile lazyload cover dib f4 ml1 mr4 bg-black relative mw-100 shadow-5">
<img width="400px" height="200px" src="/images/meetup/hacktberfest.jpg"></img>
</a>
<a href="/event/beijing-2019-04-20/" class="tile lazyload cover dib f4 ml1 mr4 bg-black relative mw-100 shadow-5">
<img width="400px" height="200px" src="/images/meetup/cloud-native-community-day.jpeg"></img>
<a href="/event/shenzhen/" class="tile lazyload cover dib f4 ml1 mr4 bg-black relative mw-100 shadow-5">
<img width="400px" height="200px" src="/images/meetup/shenzhen.jpeg"></img>
</a>
......@@ -293,14 +293,14 @@ var trackOutboundLink = function(id, url) {
<a href="/event/wuhang/" class="tile lazyload cover dib f4 ml1 mr4 bg-black relative mw-100 shadow-5">
<img width="400px" height="200px" src="/images/meetup/hacktberfest.jpg"></img>
<a href="/event/shanghai-2019-06/" class="tile lazyload cover dib f4 ml1 mr4 bg-black relative mw-100 shadow-5">
<img width="400px" height="200px" src="/images/meetup/shanghai.jpeg"></img>
</a>
<a href="/event/beijing-2019-11/" class="tile lazyload cover dib f4 ml1 mr4 bg-black relative mw-100 shadow-5">
<a href="/event/wuhang/" class="tile lazyload cover dib f4 ml1 mr4 bg-black relative mw-100 shadow-5">
<img width="400px" height="200px" src="/images/meetup/hacktberfest.jpg"></img>
</a>
......
......@@ -12,6 +12,19 @@
"original": "",
"poster": ""
},
{
"uri": "https://jenkins-zh.cn/wechat/articles/2019/05/2019-05-22-jacoco-coverage-for-functional-test/",
"title": "基于 Jenkins + JaCoCo 实现功能测试代码覆盖率统计",
"type": "wechat",
"date": "2019-05-22 00:00:00 +0000 UTC",
"tags": ["jenkins", "jacoco", "ci", "coverage"],
"description": "本文对 JaCoCo 进行简要介绍,并借助 Jenkins 实现功能测试代码覆盖率统计",
"content": " 使用 JaCoCo 统计功能测试代码覆盖率? 对于 JaCoCo,有所了解但又不是很熟悉。 \u0026ldquo;有所了解\u0026rdquo;指的是在 CI 实践中已经使用 JaCoCo 对单元测试代码覆盖率统计: 当代码 push 到代码仓库后,用 JaCoCo 进行单元测试代码覆盖率统计,并将相应数据推送到 SonarQube。 \u0026ldquo;不是很熟\u0026rdquo;指的是应用场景也仅限于此,并未进行过多研究与实践。\n前不久,有测试同事提出,想要在实际测试时,用 JaCoCo 统计功能测试代码覆盖率。 其主要目的是在经过功能测试后,通过查看代码覆盖率统计的相关指标,增强对软件质量的信心。 经查阅资料,证明这是可行的。\n由于对 JaCoCo 不甚了解,于是查阅官网资料对 JaCoCo 进一步了解。\n进一步了解 JaCoCo JaCoCo,即 Java Code Coverage,是一款开源的 Java 代码覆盖率统计工具。 它由 EclEmma 团队根据多年来使用和集成现有库的经验教训而创建。\nJaCoCo 愿景 JaCoCo 应该为基于 Java VM 的环境中的代码覆盖率分析提供标准技术。 重点是提供一个轻量级的、灵活的、文档良好的库,以便与各种构建和开发工具集成。\nJaCoCo 产品功能 指令(C0)、分支(C1)、行、方法、类型和圈复杂度的覆盖率分析。 基于 Java 字节码,因此也可以在没有源文件的情况下工作。 通过基于 Java agent 的实时检测进行简单集成。其他集成场景(如自定义类加载器)也可以通过 API 实现。 框架无关性:平稳地与基于 Java VM 的应用程序集成,比如普通 Java 程序、OSGi 框架、web 容器或 EJB 服务器。 兼容所有已发布的 Java 类文件版本。 支持不同的 JVM 语言。 支持几种报告格式( HTML、XML、CSV )。 远程协议和 JMX 控件,以便在任何时间点从覆盖率 agent 请求执行数据 dump 。 Ant 任务,用于收集和管理执行数据并创建结构化覆盖报告。 Maven 插件,用于收集覆盖信息并在Maven构建中创建报告。 非功能特性 使用简单和与现有构建脚本和工具集成。 良好的性能和最小的运行时开销,特别是对大型项目。 轻量级实现,对外部库和系统资源的依赖性最小。 全面的文档。 完整文档化的 API ( JavaDoc ) 和用于与其他工具集成的示例。 回归测试基于 JUnit 测试用例,具有完整的功能测试覆盖率。 对 JaCoCo 可以与现有构建脚本和工具进行集成这里做进一步说明: 官方提供了 Java API、Java Agent 、CLI、Ant 、Maven、Eclipse 这几种集成方式; 第三方提供了诸如与 Gradle、IDEA、Jenkins 等其它工具的集成方式。\n抛开理论,开始实践 JaCoCo 不仅支持统计本地服务的代码覆盖率,也支持统计远程服务的代码覆盖率。 单元测试覆盖率统计就是统计本地服务的代码覆盖率,代码和运行的服务在一台机器上,笔者这里通过使用 JaCoCo Maven 插件完成的。 而功能测试代码覆盖率统计则是统计远程服务的代码覆盖率,代码和运行的服务一般不在一台机器上,这里需要借助 JaCoCo Java agent 实现。 \u0026gt; 备注:实际上,JaCoCo Maven 插件也使用了 JaCoCo Java agent,不过用户不需要直接关系 Java agent 及其选项,Maven 插件都透明地处理了。\n1、下载 JaCoCo 分发包 可以从 JaCoCo 官网下载分发包,也可以从 Maven 仓库(中央仓库或私服)下载。 分发包的 lib 目录下,包括以下库:\n2、Java 应用启动脚本添加 jacocoagent 相关 JVM 参数 需要将 jacocoagent.jar 推送到部署应用的服务器上,笔者这里用 Ansible 进行了批量推送。 Java 应用启动脚本需要加入类似下面的 JVM 参数:\nJAVA_OPTS=\u0026quot;$JAVA_OPTS -javaagent:/path/jacocoagent.jar=includes=*,output=tcpserver,append=false,address=$IP,port=$JACOCO_PORT\u0026quot; 这样在应用成功启动后,会暴露一个 TCP 服务,客户端可以连接到这个服务并获取执行数据文件。\n相关属性说明如下: - append:其中 append=false 表示 dump 每次会生成一个新的执行数据文件,如果 append=true,dump 时则会将数据追加到已存在的执行数据文件。 其中 output=tcpserver 表示 agent 监听来自被 adrress 和 port 属性指定的TCP 端口的连接,执行数据被写到这个连接; - output:如果 output=tcpclient 则表示在启动时,agent 连接到被 adrress 和 port 属性指定的TCP 端口,执行数据被写到这个连接; 如果 output=file 则表示在 JVM 终止时,执行数据被写到被 destfile 属性指定的文件。output 默认值为 file 。 - address:当 output 为 tcpserver 时绑定到的 IP 地址或主机名,或者当 output 为 tcpclient 时连接到的 IP 地址或主机名。 在 tcpserver 模式下,值为“*”导致代理只接受本机地址上的连接。address 默认值为 127.0.0.1 。 - port:当 output 方式为 tcpserver 时绑定到该端口,或者当 output 方式为 tcpclient 时连接到该端口。 在 tcpserver 模式下,端口必须可用,这意味着如果多个 JaCoCo agent 在同一台机器上运行,则必须指定不同的端口。port 默认值为 6300 。\n3、创建及配置 Jenkins Pipeline 任务 Jenkins 任务大致有几个步骤:拉取代码,构建,dump 应用执行数据( jacoco.exec ),解析 JaCoCo 产生的 jacoco.exec 文件,然后生成覆盖率报告(HTML 格式)。 拉取代码这里无需多说,配置下从代码仓库(SVN/Git)和分支地址就可以了,比较简单。 构建这里用了 Jenkins Pipeline Maven Integration Plugin ,笔者这里所用的 Maven 命令是 mvn clean package -Dmaven.test.skip=true 。 dump 应用执行数据这里有多种方式:Ant、CLI、Maven,因为Java 应用是用 Maven 构建的,这里选择了 Maven Jacoco Plugin。 解析 JaCoCo 产生的 jacoco.exec 文件,然后生成覆盖率报告(HTML 格式)笔者这里使用了 Jenkins Jacoco Plugin。\nJenkins Pipeline 案例如下:\npipeline { agent any tools { jdk 'JDK1.8' } stages { stage('Checkout'){ steps{ git branch: '${GIT_BRANCH}', credentialsId: 'xxx-xxx-xx-xx-xxx', url: '${GIT_URL}' } } stage('Build') { steps{ withMaven(maven: 'maven'){ sh \u0026quot;mvn clean package -Dmaven.test.skip=true\u0026quot; } } } stage('DumpFromServer'){ steps { withMaven(maven: 'maven'){ sh 'mvn org.jacoco:jacoco-maven-plugin:0.8.4:dump -Djacoco.address=${SERVER_IP} -Djacoco.port=${JACOCO_PORT}' } } } stage('JacocoPublisher') { steps { jacoco() } } } } JaCoCo 覆盖率报告,部分截图如下:\n总结 笔者所实现的方式并未覆盖任何场景,但是大同小异,相关工具的使用详情可以查看官网文档,因为它是最全面的。 笔者希望这个实践能给有类似诉求的同行一些参考,当然笔者也希望能够和大家互相交流。 同时笔者的 JaCoCo 实践之路并未结束,可能在使用的过程中会有一些问题需要解决, 后续也将考虑使用 Jenkins API 为需要统计功能测试代码覆盖率的 Java 应用实例自动生成一个对应的 Jenkins 任务, 并在 Java 应用实例销毁后,对相应的 Jenkins 任务进行清理等其它功能。\n参考 https://www.eclemma.org/jacoco/index.html https://www.jacoco.org/jacoco/trunk/doc/integrations.html https://www.jacoco.org/jacoco/trunk/doc/agent.html https://www.jacoco.org/jacoco/trunk/doc/counters.html https://www.eclemma.org/jacoco/trunk/doc/mission.html ",
"auhtor": "donhui",
"translator": "",
"original": "",
"poster": "“./2019-05-22-jacoco-coverage-for-functional-test/hangzhou.jpg”"
},
{
"uri": "https://jenkins-zh.cn/wechat/articles/2019/05/2019-05-20-jenkins-ansible-springboot/",
"title": "使用 Jenkins + Ansible 实现 Spring Boot 自动化部署101",
......@@ -926,7 +939,7 @@
"uri": "https://jenkins-zh.cn/tags/ci/",
"title": "Ci",
"type": "tags",
"date": "2019-05-17 00:00:00 +0000 UTC",
"date": "2019-05-22 00:00:00 +0000 UTC",
"tags": [],
"description": "",
"content": "",
......@@ -1026,6 +1039,19 @@
"original": "",
"poster": ""
},
{
"uri": "https://jenkins-zh.cn/tags/coverage/",
"title": "Coverage",
"type": "tags",
"date": "2019-05-22 00:00:00 +0000 UTC",
"tags": [],
"description": "",
"content": "",
"auhtor": "",
"translator": "",
"original": "",
"poster": ""
},
{
"uri": "https://jenkins-zh.cn/wechat/articles/2018/12/2018-12-5-custom-war-packager/",
"title": "Custom WAR Packager",
......@@ -1208,6 +1234,19 @@
"original": "",
"poster": ""
},
{
"uri": "https://jenkins-zh.cn/tags/jacoco/",
"title": "Jacoco",
"type": "tags",
"date": "2019-05-22 00:00:00 +0000 UTC",
"tags": [],
"description": "",
"content": "",
"auhtor": "",
"translator": "",
"original": "",
"poster": ""
},
{
"uri": "https://jenkins-zh.cn/tags/java11/",
"title": "Java11",
......@@ -1225,7 +1264,7 @@
"uri": "https://jenkins-zh.cn/tags/jenkins/",
"title": "Jenkins",
"type": "tags",
"date": "2019-05-20 00:00:00 +0000 UTC",
"date": "2019-05-22 00:00:00 +0000 UTC",
"tags": [],
"description": "",
"content": "",
......@@ -1277,7 +1316,7 @@
"uri": "https://jenkins-zh.cn/",
"title": "Jenkins 中文社区",
"type": "page",
"date": "2019-05-20 00:00:00 +0000 UTC",
"date": "2019-05-22 00:00:00 +0000 UTC",
"tags": [],
"description": "",
"content": "",
......@@ -1745,7 +1784,7 @@
"uri": "https://jenkins-zh.cn/wechat/",
"title": "Wechats",
"type": "wechat",
"date": "2019-05-20 00:00:00 +0000 UTC",
"date": "2019-05-22 00:00:00 +0000 UTC",
"tags": [],
"description": "",
"content": "",
......
......@@ -6,7 +6,7 @@
<description>Recent content on Jenkins 中文社区</description>
<generator>Hugo -- gohugo.io</generator>
<language>zh-CN</language>
<lastBuildDate>Mon, 20 May 2019 00:00:00 +0000</lastBuildDate>
<lastBuildDate>Wed, 22 May 2019 00:00:00 +0000</lastBuildDate>
<atom:link href="https://jenkins-zh.cn/index.xml" rel="self" type="application/rss+xml" />
......@@ -24,6 +24,20 @@
GitHub 请您使用同一个 GitHub 账号来与大家交流,不欢迎使用所谓的“小号”。</description>
</item>
<item>
<title>基于 Jenkins &#43; JaCoCo 实现功能测试代码覆盖率统计</title>
<link>https://jenkins-zh.cn/wechat/articles/2019/05/2019-05-22-jacoco-coverage-for-functional-test/</link>
<pubDate>Wed, 22 May 2019 00:00:00 +0000</pubDate>
<guid>https://jenkins-zh.cn/wechat/articles/2019/05/2019-05-22-jacoco-coverage-for-functional-test/</guid>
<description>使用 JaCoCo 统计功能测试代码覆盖率? 对于 JaCoCo,有所了解但又不是很熟悉。 &amp;ldquo;有所了解&amp;rdquo;指的是在 CI 实践中已经使用 JaCoCo 对单元测试代码覆盖率统计: 当代码 push 到代码仓库后,用 JaCoCo 进行单元测试代码覆盖率统计,并将相应数据推送到 SonarQube。 &amp;ldquo;不是很熟&amp;rdquo;指的是应用场景也仅限于此,并未进行过多研究与实践。
前不久,有测试同事提出,想要在实际测试时,用 JaCoCo 统计功能测试代码覆盖率。 其主要目的是在经过功能测试后,通过查看代码覆盖率统计的相关指标,增强对软件质量的信心。 经查阅资料,证明这是可行的。
由于对 JaCoCo 不甚了解,于是查阅官网资料对 JaCoCo 进一步了解。
进一步了解 JaCoCo JaCoCo,即 Java Code Coverage,是一款开源的 Java 代码覆盖率统计工具。 它由 EclEmma 团队根据多年来使用和集成现有库的经验教训而创建。
JaCoCo 愿景 JaCoCo 应该为基于 Java VM 的环境中的代码覆盖率分析提供标准技术。 重点是提供一个轻量级的、灵活的、文档良好的库,以便与各种构建和开发工具集成。
JaCoCo 产品功能 指令(C0)、分支(C1)、行、方法、类型和圈复杂度的覆盖率分析。 基于 Java 字节码,因此也可以在没有源文件的情况下工作。 通过基于 Java agent 的实时检测进行简单集成。其他集成场景(如自定义类加载器)也可以通过 API 实现。 框架无关性:平稳地与基于 Java VM 的应用程序集成,比如普通 Java 程序、OSGi 框架、web 容器或 EJB 服务器。 兼容所有已发布的 Java 类文件版本。 支持不同的 JVM 语言。 支持几种报告格式( HTML、XML、CSV )。 远程协议和 JMX 控件,以便在任何时间点从覆盖率 agent 请求执行数据 dump 。 Ant 任务,用于收集和管理执行数据并创建结构化覆盖报告。 Maven 插件,用于收集覆盖信息并在Maven构建中创建报告。 非功能特性 使用简单和与现有构建脚本和工具集成。 良好的性能和最小的运行时开销,特别是对大型项目。 轻量级实现,对外部库和系统资源的依赖性最小。 全面的文档。 完整文档化的 API ( JavaDoc ) 和用于与其他工具集成的示例。 回归测试基于 JUnit 测试用例,具有完整的功能测试覆盖率。 对 JaCoCo 可以与现有构建脚本和工具进行集成这里做进一步说明: 官方提供了 Java API、Java Agent 、CLI、Ant 、Maven、Eclipse 这几种集成方式; 第三方提供了诸如与 Gradle、IDEA、Jenkins 等其它工具的集成方式。</description>
</item>
<item>
<title>使用 Jenkins &#43; Ansible 实现 Spring Boot 自动化部署101</title>
<link>https://jenkins-zh.cn/wechat/articles/2019/05/2019-05-20-jenkins-ansible-springboot/</link>
......
......@@ -6,6 +6,11 @@
<loc>https://jenkins-zh.cn/about/code-of-conduct/</loc>
</url>
<url>
<loc>https://jenkins-zh.cn/wechat/articles/2019/05/2019-05-22-jacoco-coverage-for-functional-test/</loc>
<lastmod>2019-05-22T00:00:00+00:00</lastmod>
</url>
<url>
<loc>https://jenkins-zh.cn/wechat/articles/2019/05/2019-05-20-jenkins-ansible-springboot/</loc>
<lastmod>2019-05-20T00:00:00+00:00</lastmod>
......@@ -343,7 +348,7 @@
<url>
<loc>https://jenkins-zh.cn/tags/ci/</loc>
<lastmod>2019-05-17T00:00:00+00:00</lastmod>
<lastmod>2019-05-22T00:00:00+00:00</lastmod>
<priority>0</priority>
</url>
......@@ -387,6 +392,12 @@
<priority>0</priority>
</url>
<url>
<loc>https://jenkins-zh.cn/tags/coverage/</loc>
<lastmod>2019-05-22T00:00:00+00:00</lastmod>
<priority>0</priority>
</url>
<url>
<loc>https://jenkins-zh.cn/wechat/articles/2018/12/2018-12-5-custom-war-packager/</loc>
</url>
......@@ -465,6 +476,12 @@
<priority>0</priority>
</url>
<url>
<loc>https://jenkins-zh.cn/tags/jacoco/</loc>
<lastmod>2019-05-22T00:00:00+00:00</lastmod>
<priority>0</priority>
</url>
<url>
<loc>https://jenkins-zh.cn/tags/java11/</loc>
<lastmod>2019-02-20T00:00:00+00:00</lastmod>
......@@ -473,7 +490,7 @@
<url>
<loc>https://jenkins-zh.cn/tags/jenkins/</loc>
<lastmod>2019-05-20T00:00:00+00:00</lastmod>
<lastmod>2019-05-22T00:00:00+00:00</lastmod>
<priority>0</priority>
</url>
......@@ -493,7 +510,7 @@
<url>
<loc>https://jenkins-zh.cn/</loc>
<lastmod>2019-05-20T00:00:00+00:00</lastmod>
<lastmod>2019-05-22T00:00:00+00:00</lastmod>
<priority>0</priority>
</url>
......@@ -688,7 +705,7 @@
<url>
<loc>https://jenkins-zh.cn/wechat/</loc>
<lastmod>2019-05-20T00:00:00+00:00</lastmod>
<lastmod>2019-05-22T00:00:00+00:00</lastmod>
<priority>0</priority>
</url>
......
......@@ -35,7 +35,7 @@
<meta property="og:type" content="website" />
<meta property="og:url" content="https://jenkins-zh.cn/tags/ci/" />
<meta property="og:updated_time" content="2019-05-17T00:00:00&#43;00:00"/>
<meta property="og:updated_time" content="2019-05-22T00:00:00&#43;00:00"/>
<meta itemprop="name" content="Ci">
<meta itemprop="description" content="">
......@@ -185,6 +185,33 @@ var trackOutboundLink = function(id, url) {
<div class="bg-white mb2 pa3 pa4-l gray">
<h1 class="near-black f3">
<a href="/wechat/articles/2019/05/2019-05-22-jacoco-coverage-for-functional-test/" class="link primary-color dim">基于 Jenkins &#43; JaCoCo 实现功能测试代码覆盖率统计</a>
</h1>
<div class="lh-copy links">
本文对 JaCoCo 进行简要介绍,并借助 Jenkins 实现功能测试代码覆盖率统计
<a href="/wechat/articles/2019/05/2019-05-22-jacoco-coverage-for-functional-test/" class="f6 mt2 db link primary-color dim">
查看更多 &raquo;
</a>
</div>
</div>
</div>
<div class="relative weight-0" style="max-width: 350px">
<div class="bg-white mb2 pa3 pa4-l gray">
<h1 class="near-black f3">
<a href="/wechat/articles/2019/05/2019-05-17-from-jenkins-to-jenkins-x/" class="link primary-color dim">从 Jenkins 到 Jenkins X</a>
</h1>
......
......@@ -6,11 +6,25 @@
<description>Recent content in Ci on Jenkins 中文社区</description>
<generator>Hugo -- gohugo.io</generator>
<language>zh-CN</language>
<lastBuildDate>Fri, 17 May 2019 00:00:00 +0000</lastBuildDate>
<lastBuildDate>Wed, 22 May 2019 00:00:00 +0000</lastBuildDate>
<atom:link href="https://jenkins-zh.cn/tags/ci/index.xml" rel="self" type="application/rss+xml" />
<item>
<title>基于 Jenkins &#43; JaCoCo 实现功能测试代码覆盖率统计</title>
<link>https://jenkins-zh.cn/wechat/articles/2019/05/2019-05-22-jacoco-coverage-for-functional-test/</link>
<pubDate>Wed, 22 May 2019 00:00:00 +0000</pubDate>
<guid>https://jenkins-zh.cn/wechat/articles/2019/05/2019-05-22-jacoco-coverage-for-functional-test/</guid>
<description>使用 JaCoCo 统计功能测试代码覆盖率? 对于 JaCoCo,有所了解但又不是很熟悉。 &amp;ldquo;有所了解&amp;rdquo;指的是在 CI 实践中已经使用 JaCoCo 对单元测试代码覆盖率统计: 当代码 push 到代码仓库后,用 JaCoCo 进行单元测试代码覆盖率统计,并将相应数据推送到 SonarQube。 &amp;ldquo;不是很熟&amp;rdquo;指的是应用场景也仅限于此,并未进行过多研究与实践。
前不久,有测试同事提出,想要在实际测试时,用 JaCoCo 统计功能测试代码覆盖率。 其主要目的是在经过功能测试后,通过查看代码覆盖率统计的相关指标,增强对软件质量的信心。 经查阅资料,证明这是可行的。
由于对 JaCoCo 不甚了解,于是查阅官网资料对 JaCoCo 进一步了解。
进一步了解 JaCoCo JaCoCo,即 Java Code Coverage,是一款开源的 Java 代码覆盖率统计工具。 它由 EclEmma 团队根据多年来使用和集成现有库的经验教训而创建。
JaCoCo 愿景 JaCoCo 应该为基于 Java VM 的环境中的代码覆盖率分析提供标准技术。 重点是提供一个轻量级的、灵活的、文档良好的库,以便与各种构建和开发工具集成。
JaCoCo 产品功能 指令(C0)、分支(C1)、行、方法、类型和圈复杂度的覆盖率分析。 基于 Java 字节码,因此也可以在没有源文件的情况下工作。 通过基于 Java agent 的实时检测进行简单集成。其他集成场景(如自定义类加载器)也可以通过 API 实现。 框架无关性:平稳地与基于 Java VM 的应用程序集成,比如普通 Java 程序、OSGi 框架、web 容器或 EJB 服务器。 兼容所有已发布的 Java 类文件版本。 支持不同的 JVM 语言。 支持几种报告格式( HTML、XML、CSV )。 远程协议和 JMX 控件,以便在任何时间点从覆盖率 agent 请求执行数据 dump 。 Ant 任务,用于收集和管理执行数据并创建结构化覆盖报告。 Maven 插件,用于收集覆盖信息并在Maven构建中创建报告。 非功能特性 使用简单和与现有构建脚本和工具集成。 良好的性能和最小的运行时开销,特别是对大型项目。 轻量级实现,对外部库和系统资源的依赖性最小。 全面的文档。 完整文档化的 API ( JavaDoc ) 和用于与其他工具集成的示例。 回归测试基于 JUnit 测试用例,具有完整的功能测试覆盖率。 对 JaCoCo 可以与现有构建脚本和工具进行集成这里做进一步说明: 官方提供了 Java API、Java Agent 、CLI、Ant 、Maven、Eclipse 这几种集成方式; 第三方提供了诸如与 Gradle、IDEA、Jenkins 等其它工具的集成方式。</description>
</item>
<item>
<title>从 Jenkins 到 Jenkins X</title>
<link>https://jenkins-zh.cn/wechat/articles/2019/05/2019-05-17-from-jenkins-to-jenkins-x/</link>
......
<!DOCTYPE html>
<html class="no-js" lang="zh-CN">
<head>
<meta charset="utf-8">
<link rel="preload" href="https://jenkins-zh.cn/files/muli-latin-200.woff2" as="font" type="font/woff2" crossorigin>
<link rel="preload" href="https://jenkins-zh.cn/files/muli-latin-400.woff2" as="font" type="font/woff2" crossorigin>
<link rel="preload" href="https://jenkins-zh.cn/files/muli-latin-800.woff2" as="font" type="font/woff2" crossorigin>
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<title>Coverage | Jenkins 中文社区</title>
<meta name="HandheldFriendly" content="True">
<meta name="MobileOptimized" content="320">
<meta name="description" content="共建开放、包容、活跃的 Jenkins 社区">
<meta name="keywords" content="Jenkins,Jenkins中文社区,Jenkins官方公众号,持续集成,持续交付,开源社区,DevOps">
<meta name="viewport" content="width=device-width,minimum-scale=1">
<meta name="generator" content="Hugo 0.54.0" />
<META NAME="ROBOTS" CONTENT="INDEX, FOLLOW">
<link rel="alternate" type="application/rss&#43;xml" href="https://jenkins-zh.cn/tags/coverage/index.xml">
<link href='/dist/main.css' rel='stylesheet' type="text/css" /><script src="/js/chart.js"></script>
<style>
img.avatar {
width: 32px;
display: inline;
}
</style>
<meta property="og:title" content="Coverage" />
<meta property="og:description" content="" />
<meta property="og:type" content="website" />
<meta property="og:url" content="https://jenkins-zh.cn/tags/coverage/" />
<meta property="og:updated_time" content="2019-05-22T00:00:00&#43;00:00"/>
<meta itemprop="name" content="Coverage">
<meta itemprop="description" content="">
<meta name="twitter:card" content="summary"/>
<meta name="twitter:title" content="Coverage"/>
<meta name="twitter:description" content=""/>
<script async src="https://www.googletagmanager.com/gtag/js?id=UA-4216293-5"></script>
<script>
window.dataLayer = window.dataLayer || [];
function gtag(){dataLayer.push(arguments);}
gtag('js', new Date());
gtag('config', 'UA-4216293-5');
var trackOutboundLink = function(id, url) {
console.log("track:", id, url)
gtag('event', 'click', {
'event_category': 'outbound',
'event_label': id,
'transport_type': 'beacon',
'event_callback': function(){document.location = url;}
});
}
</script>
</head>
<body class="ma0 sans-serif bg-primary-color-light">
<nav class="bg-primary-color-dark pv4 w-100" role="navigation">
<div class="center flex-ns flex-wrap items-center justify-start mw9">
<h1 class="dim f3 lh-solid ml0-ns mr0 mr4-l mv0 pl3 pl4-ns">
<a href="https://jenkins-zh.cn/" class="link white">
Jenkins 中文社区
</a>
</h1>
<ul class="list ma0 pa0 dn dib-l">
<li class="f5 dib mr4" role="menuitem">
<a href="/wechat/" class="dim link light-silver"
>
微信
</a>
</li>
<li class="f5 dib mr4" role="menuitem">
<a href="/event/" class="dim link light-silver"
>
活动
</a>
</li>
<li class="f5 dib mr4" role="menuitem">
<a href="/about/" class="dim link light-silver"
>
关于我们
</a>
</li>
<li class="f5 dib mr4" role="menuitem">
<a href="http://jenkins.io/zh" class="dim link light-silver"
target="_blank">
Jenkins 官网
<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="10" height="10" viewBox="0 0 32 32" class="fill-current v-base" aria-label="External Link">
<path d="M25.152 16.576v5.696q0 2.144-1.504 3.648t-3.648 1.504h-14.848q-2.144 0-3.648-1.504t-1.504-3.648v-14.848q0-2.112 1.504-3.616t3.648-1.536h12.576q0.224 0 0.384 0.16t0.16 0.416v1.152q0 0.256-0.16 0.416t-0.384 0.16h-12.576q-1.184 0-2.016 0.832t-0.864 2.016v14.848q0 1.184 0.864 2.016t2.016 0.864h14.848q1.184 0 2.016-0.864t0.832-2.016v-5.696q0-0.256 0.16-0.416t0.416-0.16h1.152q0.256 0 0.416 0.16t0.16 0.416zM32 1.152v9.12q0 0.48-0.352 0.8t-0.8 0.352-0.8-0.352l-3.136-3.136-11.648 11.648q-0.16 0.192-0.416 0.192t-0.384-0.192l-2.048-2.048q-0.192-0.16-0.192-0.384t0.192-0.416l11.648-11.648-3.136-3.136q-0.352-0.352-0.352-0.8t0.352-0.8 0.8-0.352h9.12q0.48 0 0.8 0.352t0.352 0.8z"></path>
</svg>
</a>
</li>
</ul>
<div class="db dib-ns pl3"><form id="site-search-form" action="" role="search">
<fieldset class="bn ma0 pa0">
<label class="clip" for="email-address">Search</label>
<input type="search" id="search-input" class="needs-js bg-left bg-transparent bn f5 input-reset lh-solid mt3 mt0-ns pl4 pv2 w5 white"
placeholder="搜索文档" type="text"
name="email-address" value="" style="background-image:url('/images/icon-search.png');background-size:16px 16px;">
</fieldset>
</form>
</div>
<div class="list ma0 pa0 dn dib-l"></div>
<span class="absolute mt1 mt2-l pr3 right-0 top-0">
<a class="github-button needs-js link primary-color-dark" href="https://github.com/jenkins-zh/jenkins-zh/" data-size="large" data-show-count="false" aria-label="Star Jenkins WeChat GitHub">Star</a>
</span>
</div>
</nav>
<main role="main" class="content-with-sidebar min-vh-100 pb7 pb0-ns">
<div class="w-100 ph4 pb5 pb6-ns pt1 mt4 pt3-ns">
<div class="flex">
<div class="w-100 w-80-l ph0 ph4-l">
<article class="w-100 nested-copy-line-height nested-links nested-img">
<h1 class="primary-color-dark f2">
Tag: Coverage
</h1>
<div class=" mid-gray f5 f4-l">
</div>
</article>
<div class="flex flex-wrap">
<section class="flex-ns flex-wrap justify-between w-100">
<div class="relative weight-0" style="max-width: 350px">
<div class="bg-white mb2 pa3 pa4-l gray">
<h1 class="near-black f3">
<a href="/wechat/articles/2019/05/2019-05-22-jacoco-coverage-for-functional-test/" class="link primary-color dim">基于 Jenkins &#43; JaCoCo 实现功能测试代码覆盖率统计</a>
</h1>
<div class="lh-copy links">
本文对 JaCoCo 进行简要介绍,并借助 Jenkins 实现功能测试代码覆盖率统计
<a href="/wechat/articles/2019/05/2019-05-22-jacoco-coverage-for-functional-test/" class="f6 mt2 db link primary-color dim">
查看更多 &raquo;
</a>
</div>
</div>
</div>
</section>
</div>
</div>
</div>
</div>
</main>
<footer class="bg-primary-color-dark ph4-ns pt4 relative w-100" role="contentinfo">
<div class="center flex-ns flex-wrap justify-between mw9 w-90">
<div class="pb3 pt4 w-100 w-50-ns">
<div class="b f3 light-gray mb3 nested-links tc">
<a href="https://github.com/jenkins-zh/jenkins-zh/graphs/contributors" target="_blank" class="link">Jenkins 社区贡献者</a> 维护<br/>
</div>
<ul class="center f6 list ma0 mv3 pa0 tc" style="display:none"><li class="dib mr3"><a href="https://github.com/jenkins-zh/jenkins-zh/issues/new" class="dim link light-gray pv2">File an Issue</a></li></ul>
<ul class="center f6 list ma0 mv4 pa0 tc">
<li class="dib mr3">
<a href="https://twitter.com/suren69811254" target="_blank" class="dim link light-gray pv2">@suren69811254</a>
</li>
<li class="dib mr3">
<a href="https://www.youtube.com/channel/UC63xz3pq26BBgwB3cnwCoqQ" target="_blank" class="dim link light-gray pv2">YouTube</a>
</li>
</ul>
</div>
<div>
<a href="https://mp.weixin.qq.com/s/vifdduC3kRGSIMpyL03yVA" target="_blank">
<img src="https://jenkins.io/images/jenkins-wechat.png" with="100" height="100">
</a>
</div>
</div>
<div class="f7 gray mb5 mb0-ns ph3 w-100" style="display:none"> 
<p class="dib mr4">Jenkins&reg; is a registered trademark of <a href="https://www.spi-inc.org/" class="link">Software in the Public Interest, Inc.</a></p>
<p class="dib">Copyright 2018–2019 the original authors.</p>
</div>
<div class="bg-primary-color-dark bottom-0 left-0 right-0 dn-l fixed pb3 ph3 w-100"><div class="globalmenu mobilemenu pb3 dn">
<ul class="list hidden dib ph0 ma0 scrolling-touch tc">
<li class="tl dib ma0 hover-bg-black w-100">
<a href="/wechat/" class="ttu f6 link primary-color-light overflow hover-white db brand-font ma0 w-100 pv3 ph4">
微信
</a>
</li>
<li class="tl dib ma0 hover-bg-black w-100">
<a href="/event/" class="ttu f6 link primary-color-light overflow hover-white db brand-font ma0 w-100 pv3 ph4">
活动
</a>
</li>
<li class="tl dib ma0 hover-bg-black w-100">
<a href="/about/" class="ttu f6 link primary-color-light overflow hover-white db brand-font ma0 w-100 pv3 ph4">
关于我们
</a>
</li>
<li class="tl dib ma0 hover-bg-black w-100">
<a href="http://jenkins.io/zh" class="ttu f6 link primary-color-light overflow hover-white db brand-font ma0 w-100 pv3 ph4">
Jenkins 官网
</a>
</li>
</ul>
</div>
<div class="docsmenu mobilemenu pb3 dn">
<ul class="list dib ph0 ma0 scrolling-touch tc">
</ul>
</div>
<div class="flex dn-l justify-between">
<button class="js-toggle flex-auto dib dn-l f6 tc db mt4-ns ph3 pv2 link mr2 white bg-primary-color-dark hover-bg-primary-color ba b--white-40 w-auto" data-target=".globalmenu">Menu</button>
<button class="js-toggle flex-auto dib dn-l f6 tc db mt4-ns ph3 pv2 link white bg-primary-color-dark hover-bg-primary-color ba b--white-40 w-auto" data-target=".docsmenu">Docs Menu</button>
</div>
</div>
</footer>
<link href="/dist/auto-complete.css" rel="stylesheet">
<script type="text/javascript">
var baseurl = "https:\/\/jenkins-zh.cn\/";
</script>
<script src="/dist/lunr.js"></script>
<script src="/dist/autocomplete.js"></script>
<script src="/dist/jquery-3.2.1.min.js"></script>
<script src="/dist/search.js"></script>
<script async defer src="https://buttons.github.io/buttons.js"></script>
<script>
var _hmt = _hmt || [];
(function() {
var hm = document.createElement("script");
hm.src = "https://hm.baidu.com/hm.js?6db234f713318730f0e5f6a95bdd8d47";
var s = document.getElementsByTagName("script")[0];
s.parentNode.insertBefore(hm, s);
})();
</script>
</body>
</html>
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
<channel>
<title>Coverage on Jenkins 中文社区</title>
<link>https://jenkins-zh.cn/tags/coverage/</link>
<description>Recent content in Coverage on Jenkins 中文社区</description>
<generator>Hugo -- gohugo.io</generator>
<language>zh-CN</language>
<lastBuildDate>Wed, 22 May 2019 00:00:00 +0000</lastBuildDate>
<atom:link href="https://jenkins-zh.cn/tags/coverage/index.xml" rel="self" type="application/rss+xml" />
<item>
<title>基于 Jenkins &#43; JaCoCo 实现功能测试代码覆盖率统计</title>
<link>https://jenkins-zh.cn/wechat/articles/2019/05/2019-05-22-jacoco-coverage-for-functional-test/</link>
<pubDate>Wed, 22 May 2019 00:00:00 +0000</pubDate>
<guid>https://jenkins-zh.cn/wechat/articles/2019/05/2019-05-22-jacoco-coverage-for-functional-test/</guid>
<description>使用 JaCoCo 统计功能测试代码覆盖率? 对于 JaCoCo,有所了解但又不是很熟悉。 &amp;ldquo;有所了解&amp;rdquo;指的是在 CI 实践中已经使用 JaCoCo 对单元测试代码覆盖率统计: 当代码 push 到代码仓库后,用 JaCoCo 进行单元测试代码覆盖率统计,并将相应数据推送到 SonarQube。 &amp;ldquo;不是很熟&amp;rdquo;指的是应用场景也仅限于此,并未进行过多研究与实践。
前不久,有测试同事提出,想要在实际测试时,用 JaCoCo 统计功能测试代码覆盖率。 其主要目的是在经过功能测试后,通过查看代码覆盖率统计的相关指标,增强对软件质量的信心。 经查阅资料,证明这是可行的。
由于对 JaCoCo 不甚了解,于是查阅官网资料对 JaCoCo 进一步了解。
进一步了解 JaCoCo JaCoCo,即 Java Code Coverage,是一款开源的 Java 代码覆盖率统计工具。 它由 EclEmma 团队根据多年来使用和集成现有库的经验教训而创建。
JaCoCo 愿景 JaCoCo 应该为基于 Java VM 的环境中的代码覆盖率分析提供标准技术。 重点是提供一个轻量级的、灵活的、文档良好的库,以便与各种构建和开发工具集成。
JaCoCo 产品功能 指令(C0)、分支(C1)、行、方法、类型和圈复杂度的覆盖率分析。 基于 Java 字节码,因此也可以在没有源文件的情况下工作。 通过基于 Java agent 的实时检测进行简单集成。其他集成场景(如自定义类加载器)也可以通过 API 实现。 框架无关性:平稳地与基于 Java VM 的应用程序集成,比如普通 Java 程序、OSGi 框架、web 容器或 EJB 服务器。 兼容所有已发布的 Java 类文件版本。 支持不同的 JVM 语言。 支持几种报告格式( HTML、XML、CSV )。 远程协议和 JMX 控件,以便在任何时间点从覆盖率 agent 请求执行数据 dump 。 Ant 任务,用于收集和管理执行数据并创建结构化覆盖报告。 Maven 插件,用于收集覆盖信息并在Maven构建中创建报告。 非功能特性 使用简单和与现有构建脚本和工具集成。 良好的性能和最小的运行时开销,特别是对大型项目。 轻量级实现,对外部库和系统资源的依赖性最小。 全面的文档。 完整文档化的 API ( JavaDoc ) 和用于与其他工具集成的示例。 回归测试基于 JUnit 测试用例,具有完整的功能测试覆盖率。 对 JaCoCo 可以与现有构建脚本和工具进行集成这里做进一步说明: 官方提供了 Java API、Java Agent 、CLI、Ant 、Maven、Eclipse 这几种集成方式; 第三方提供了诸如与 Gradle、IDEA、Jenkins 等其它工具的集成方式。</description>
</item>
</channel>
</rss>
\ No newline at end of file
<!DOCTYPE html><html><head><title>https://jenkins-zh.cn/tags/coverage/</title><link rel="canonical" href="https://jenkins-zh.cn/tags/coverage/"/><meta name="robots" content="noindex"><meta charset="utf-8" /><meta http-equiv="refresh" content="0; url=https://jenkins-zh.cn/tags/coverage/" /></head></html>
\ No newline at end of file
......@@ -341,6 +341,12 @@ var trackOutboundLink = function(id, url) {
</a>
</h2>
<h3>
<a href="https://jenkins-zh.cn/wechat/articles/2019/05/2019-05-22-jacoco-coverage-for-functional-test/" class="link blue">
基于 Jenkins &#43; JaCoCo 实现功能测试代码覆盖率统计
</a>
</h3>
<h3>
<a href="https://jenkins-zh.cn/wechat/articles/2019/05/2019-05-17-from-jenkins-to-jenkins-x/" class="link blue">
从 Jenkins 到 Jenkins X
......@@ -558,6 +564,22 @@ var trackOutboundLink = function(id, url) {
</div>
<div class="break-inside-avoid-l nested-copy-line-height mb5">
<h2 class="f3">
<a href="/tags/coverage" class="link black hover-blue">
coverage <span class="f6 gray"> &#8599;</span>
</a>
</h2>
<h3>
<a href="https://jenkins-zh.cn/wechat/articles/2019/05/2019-05-22-jacoco-coverage-for-functional-test/" class="link blue">
基于 Jenkins &#43; JaCoCo 实现功能测试代码覆盖率统计
</a>
</h3>
</div>
<div class="break-inside-avoid-l nested-copy-line-height mb5">
<h2 class="f3">
<a href="/tags/developer" class="link black hover-blue">
......@@ -810,6 +832,22 @@ var trackOutboundLink = function(id, url) {
</div>
<div class="break-inside-avoid-l nested-copy-line-height mb5">
<h2 class="f3">
<a href="/tags/jacoco" class="link black hover-blue">
jacoco <span class="f6 gray"> &#8599;</span>
</a>
</h2>
<h3>
<a href="https://jenkins-zh.cn/wechat/articles/2019/05/2019-05-22-jacoco-coverage-for-functional-test/" class="link blue">
基于 Jenkins &#43; JaCoCo 实现功能测试代码覆盖率统计
</a>
</h3>
</div>
<div class="break-inside-avoid-l nested-copy-line-height mb5">
<h2 class="f3">
<a href="/tags/java11" class="link black hover-blue">
......@@ -833,6 +871,12 @@ var trackOutboundLink = function(id, url) {
</a>
</h2>
<h3>
<a href="https://jenkins-zh.cn/wechat/articles/2019/05/2019-05-22-jacoco-coverage-for-functional-test/" class="link blue">
基于 Jenkins &#43; JaCoCo 实现功能测试代码覆盖率统计
</a>
</h3>
<h3>
<a href="https://jenkins-zh.cn/wechat/articles/2019/05/2019-05-20-jenkins-ansible-springboot/" class="link blue">
使用 Jenkins &#43; Ansible 实现 Spring Boot 自动化部署101
......
......@@ -68,7 +68,7 @@
<item>
<title>Ci</title>
<link>https://jenkins-zh.cn/tags/ci/</link>
<pubDate>Fri, 17 May 2019 00:00:00 +0000</pubDate>
<pubDate>Wed, 22 May 2019 00:00:00 +0000</pubDate>
<guid>https://jenkins-zh.cn/tags/ci/</guid>
<description></description>
......@@ -137,6 +137,15 @@
<description></description>
</item>
<item>
<title>Coverage</title>
<link>https://jenkins-zh.cn/tags/coverage/</link>
<pubDate>Wed, 22 May 2019 00:00:00 +0000</pubDate>
<guid>https://jenkins-zh.cn/tags/coverage/</guid>
<description></description>
</item>
<item>
<title>Developer</title>
<link>https://jenkins-zh.cn/tags/developer/</link>
......@@ -245,6 +254,15 @@
<description></description>
</item>
<item>
<title>Jacoco</title>
<link>https://jenkins-zh.cn/tags/jacoco/</link>
<pubDate>Wed, 22 May 2019 00:00:00 +0000</pubDate>
<guid>https://jenkins-zh.cn/tags/jacoco/</guid>
<description></description>
</item>
<item>
<title>Java11</title>
<link>https://jenkins-zh.cn/tags/java11/</link>
......@@ -257,7 +275,7 @@
<item>
<title>Jenkins</title>
<link>https://jenkins-zh.cn/tags/jenkins/</link>
<pubDate>Mon, 20 May 2019 00:00:00 +0000</pubDate>
<pubDate>Wed, 22 May 2019 00:00:00 +0000</pubDate>
<guid>https://jenkins-zh.cn/tags/jenkins/</guid>
<description></description>
......
<!DOCTYPE html>
<html class="no-js" lang="zh-CN">
<head>
<meta charset="utf-8">
<link rel="preload" href="https://jenkins-zh.cn/files/muli-latin-200.woff2" as="font" type="font/woff2" crossorigin>
<link rel="preload" href="https://jenkins-zh.cn/files/muli-latin-400.woff2" as="font" type="font/woff2" crossorigin>
<link rel="preload" href="https://jenkins-zh.cn/files/muli-latin-800.woff2" as="font" type="font/woff2" crossorigin>
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<title>Jacoco | Jenkins 中文社区</title>
<meta name="HandheldFriendly" content="True">
<meta name="MobileOptimized" content="320">
<meta name="description" content="共建开放、包容、活跃的 Jenkins 社区">
<meta name="keywords" content="Jenkins,Jenkins中文社区,Jenkins官方公众号,持续集成,持续交付,开源社区,DevOps">
<meta name="viewport" content="width=device-width,minimum-scale=1">
<meta name="generator" content="Hugo 0.54.0" />
<META NAME="ROBOTS" CONTENT="INDEX, FOLLOW">
<link rel="alternate" type="application/rss&#43;xml" href="https://jenkins-zh.cn/tags/jacoco/index.xml">
<link href='/dist/main.css' rel='stylesheet' type="text/css" /><script src="/js/chart.js"></script>
<style>
img.avatar {
width: 32px;
display: inline;
}
</style>
<meta property="og:title" content="Jacoco" />
<meta property="og:description" content="" />
<meta property="og:type" content="website" />
<meta property="og:url" content="https://jenkins-zh.cn/tags/jacoco/" />
<meta property="og:updated_time" content="2019-05-22T00:00:00&#43;00:00"/>
<meta itemprop="name" content="Jacoco">
<meta itemprop="description" content="">
<meta name="twitter:card" content="summary"/>
<meta name="twitter:title" content="Jacoco"/>
<meta name="twitter:description" content=""/>
<script async src="https://www.googletagmanager.com/gtag/js?id=UA-4216293-5"></script>
<script>
window.dataLayer = window.dataLayer || [];
function gtag(){dataLayer.push(arguments);}
gtag('js', new Date());
gtag('config', 'UA-4216293-5');
var trackOutboundLink = function(id, url) {
console.log("track:", id, url)
gtag('event', 'click', {
'event_category': 'outbound',
'event_label': id,
'transport_type': 'beacon',
'event_callback': function(){document.location = url;}
});
}
</script>
</head>
<body class="ma0 sans-serif bg-primary-color-light">
<nav class="bg-primary-color-dark pv4 w-100" role="navigation">
<div class="center flex-ns flex-wrap items-center justify-start mw9">
<h1 class="dim f3 lh-solid ml0-ns mr0 mr4-l mv0 pl3 pl4-ns">
<a href="https://jenkins-zh.cn/" class="link white">
Jenkins 中文社区
</a>
</h1>
<ul class="list ma0 pa0 dn dib-l">
<li class="f5 dib mr4" role="menuitem">
<a href="/wechat/" class="dim link light-silver"
>
微信
</a>
</li>
<li class="f5 dib mr4" role="menuitem">
<a href="/event/" class="dim link light-silver"
>
活动
</a>
</li>
<li class="f5 dib mr4" role="menuitem">
<a href="/about/" class="dim link light-silver"
>
关于我们
</a>
</li>
<li class="f5 dib mr4" role="menuitem">
<a href="http://jenkins.io/zh" class="dim link light-silver"
target="_blank">
Jenkins 官网
<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="10" height="10" viewBox="0 0 32 32" class="fill-current v-base" aria-label="External Link">
<path d="M25.152 16.576v5.696q0 2.144-1.504 3.648t-3.648 1.504h-14.848q-2.144 0-3.648-1.504t-1.504-3.648v-14.848q0-2.112 1.504-3.616t3.648-1.536h12.576q0.224 0 0.384 0.16t0.16 0.416v1.152q0 0.256-0.16 0.416t-0.384 0.16h-12.576q-1.184 0-2.016 0.832t-0.864 2.016v14.848q0 1.184 0.864 2.016t2.016 0.864h14.848q1.184 0 2.016-0.864t0.832-2.016v-5.696q0-0.256 0.16-0.416t0.416-0.16h1.152q0.256 0 0.416 0.16t0.16 0.416zM32 1.152v9.12q0 0.48-0.352 0.8t-0.8 0.352-0.8-0.352l-3.136-3.136-11.648 11.648q-0.16 0.192-0.416 0.192t-0.384-0.192l-2.048-2.048q-0.192-0.16-0.192-0.384t0.192-0.416l11.648-11.648-3.136-3.136q-0.352-0.352-0.352-0.8t0.352-0.8 0.8-0.352h9.12q0.48 0 0.8 0.352t0.352 0.8z"></path>
</svg>
</a>
</li>
</ul>
<div class="db dib-ns pl3"><form id="site-search-form" action="" role="search">
<fieldset class="bn ma0 pa0">
<label class="clip" for="email-address">Search</label>
<input type="search" id="search-input" class="needs-js bg-left bg-transparent bn f5 input-reset lh-solid mt3 mt0-ns pl4 pv2 w5 white"
placeholder="搜索文档" type="text"
name="email-address" value="" style="background-image:url('/images/icon-search.png');background-size:16px 16px;">
</fieldset>
</form>
</div>
<div class="list ma0 pa0 dn dib-l"></div>
<span class="absolute mt1 mt2-l pr3 right-0 top-0">
<a class="github-button needs-js link primary-color-dark" href="https://github.com/jenkins-zh/jenkins-zh/" data-size="large" data-show-count="false" aria-label="Star Jenkins WeChat GitHub">Star</a>
</span>
</div>
</nav>
<main role="main" class="content-with-sidebar min-vh-100 pb7 pb0-ns">
<div class="w-100 ph4 pb5 pb6-ns pt1 mt4 pt3-ns">
<div class="flex">
<div class="w-100 w-80-l ph0 ph4-l">
<article class="w-100 nested-copy-line-height nested-links nested-img">
<h1 class="primary-color-dark f2">
Tag: Jacoco
</h1>
<div class=" mid-gray f5 f4-l">
</div>
</article>
<div class="flex flex-wrap">
<section class="flex-ns flex-wrap justify-between w-100">
<div class="relative weight-0" style="max-width: 350px">
<div class="bg-white mb2 pa3 pa4-l gray">
<h1 class="near-black f3">
<a href="/wechat/articles/2019/05/2019-05-22-jacoco-coverage-for-functional-test/" class="link primary-color dim">基于 Jenkins &#43; JaCoCo 实现功能测试代码覆盖率统计</a>
</h1>
<div class="lh-copy links">
本文对 JaCoCo 进行简要介绍,并借助 Jenkins 实现功能测试代码覆盖率统计
<a href="/wechat/articles/2019/05/2019-05-22-jacoco-coverage-for-functional-test/" class="f6 mt2 db link primary-color dim">
查看更多 &raquo;
</a>
</div>
</div>
</div>
</section>
</div>
</div>
</div>
</div>
</main>
<footer class="bg-primary-color-dark ph4-ns pt4 relative w-100" role="contentinfo">
<div class="center flex-ns flex-wrap justify-between mw9 w-90">
<div class="pb3 pt4 w-100 w-50-ns">
<div class="b f3 light-gray mb3 nested-links tc">
<a href="https://github.com/jenkins-zh/jenkins-zh/graphs/contributors" target="_blank" class="link">Jenkins 社区贡献者</a> 维护<br/>
</div>
<ul class="center f6 list ma0 mv3 pa0 tc" style="display:none"><li class="dib mr3"><a href="https://github.com/jenkins-zh/jenkins-zh/issues/new" class="dim link light-gray pv2">File an Issue</a></li></ul>
<ul class="center f6 list ma0 mv4 pa0 tc">
<li class="dib mr3">
<a href="https://twitter.com/suren69811254" target="_blank" class="dim link light-gray pv2">@suren69811254</a>
</li>
<li class="dib mr3">
<a href="https://www.youtube.com/channel/UC63xz3pq26BBgwB3cnwCoqQ" target="_blank" class="dim link light-gray pv2">YouTube</a>
</li>
</ul>
</div>
<div>
<a href="https://mp.weixin.qq.com/s/vifdduC3kRGSIMpyL03yVA" target="_blank">
<img src="https://jenkins.io/images/jenkins-wechat.png" with="100" height="100">
</a>
</div>
</div>
<div class="f7 gray mb5 mb0-ns ph3 w-100" style="display:none"> 
<p class="dib mr4">Jenkins&reg; is a registered trademark of <a href="https://www.spi-inc.org/" class="link">Software in the Public Interest, Inc.</a></p>
<p class="dib">Copyright 2018–2019 the original authors.</p>
</div>
<div class="bg-primary-color-dark bottom-0 left-0 right-0 dn-l fixed pb3 ph3 w-100"><div class="globalmenu mobilemenu pb3 dn">
<ul class="list hidden dib ph0 ma0 scrolling-touch tc">
<li class="tl dib ma0 hover-bg-black w-100">
<a href="/wechat/" class="ttu f6 link primary-color-light overflow hover-white db brand-font ma0 w-100 pv3 ph4">
微信
</a>
</li>
<li class="tl dib ma0 hover-bg-black w-100">
<a href="/event/" class="ttu f6 link primary-color-light overflow hover-white db brand-font ma0 w-100 pv3 ph4">
活动
</a>
</li>
<li class="tl dib ma0 hover-bg-black w-100">
<a href="/about/" class="ttu f6 link primary-color-light overflow hover-white db brand-font ma0 w-100 pv3 ph4">
关于我们
</a>
</li>
<li class="tl dib ma0 hover-bg-black w-100">
<a href="http://jenkins.io/zh" class="ttu f6 link primary-color-light overflow hover-white db brand-font ma0 w-100 pv3 ph4">
Jenkins 官网
</a>
</li>
</ul>
</div>
<div class="docsmenu mobilemenu pb3 dn">
<ul class="list dib ph0 ma0 scrolling-touch tc">
</ul>
</div>
<div class="flex dn-l justify-between">
<button class="js-toggle flex-auto dib dn-l f6 tc db mt4-ns ph3 pv2 link mr2 white bg-primary-color-dark hover-bg-primary-color ba b--white-40 w-auto" data-target=".globalmenu">Menu</button>
<button class="js-toggle flex-auto dib dn-l f6 tc db mt4-ns ph3 pv2 link white bg-primary-color-dark hover-bg-primary-color ba b--white-40 w-auto" data-target=".docsmenu">Docs Menu</button>
</div>
</div>
</footer>
<link href="/dist/auto-complete.css" rel="stylesheet">
<script type="text/javascript">
var baseurl = "https:\/\/jenkins-zh.cn\/";
</script>
<script src="/dist/lunr.js"></script>
<script src="/dist/autocomplete.js"></script>
<script src="/dist/jquery-3.2.1.min.js"></script>
<script src="/dist/search.js"></script>
<script async defer src="https://buttons.github.io/buttons.js"></script>
<script>
var _hmt = _hmt || [];
(function() {
var hm = document.createElement("script");
hm.src = "https://hm.baidu.com/hm.js?6db234f713318730f0e5f6a95bdd8d47";
var s = document.getElementsByTagName("script")[0];
s.parentNode.insertBefore(hm, s);
})();
</script>
</body>
</html>
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
<channel>
<title>Jacoco on Jenkins 中文社区</title>
<link>https://jenkins-zh.cn/tags/jacoco/</link>
<description>Recent content in Jacoco on Jenkins 中文社区</description>
<generator>Hugo -- gohugo.io</generator>
<language>zh-CN</language>
<lastBuildDate>Wed, 22 May 2019 00:00:00 +0000</lastBuildDate>
<atom:link href="https://jenkins-zh.cn/tags/jacoco/index.xml" rel="self" type="application/rss+xml" />
<item>
<title>基于 Jenkins &#43; JaCoCo 实现功能测试代码覆盖率统计</title>
<link>https://jenkins-zh.cn/wechat/articles/2019/05/2019-05-22-jacoco-coverage-for-functional-test/</link>
<pubDate>Wed, 22 May 2019 00:00:00 +0000</pubDate>
<guid>https://jenkins-zh.cn/wechat/articles/2019/05/2019-05-22-jacoco-coverage-for-functional-test/</guid>
<description>使用 JaCoCo 统计功能测试代码覆盖率? 对于 JaCoCo,有所了解但又不是很熟悉。 &amp;ldquo;有所了解&amp;rdquo;指的是在 CI 实践中已经使用 JaCoCo 对单元测试代码覆盖率统计: 当代码 push 到代码仓库后,用 JaCoCo 进行单元测试代码覆盖率统计,并将相应数据推送到 SonarQube。 &amp;ldquo;不是很熟&amp;rdquo;指的是应用场景也仅限于此,并未进行过多研究与实践。
前不久,有测试同事提出,想要在实际测试时,用 JaCoCo 统计功能测试代码覆盖率。 其主要目的是在经过功能测试后,通过查看代码覆盖率统计的相关指标,增强对软件质量的信心。 经查阅资料,证明这是可行的。
由于对 JaCoCo 不甚了解,于是查阅官网资料对 JaCoCo 进一步了解。
进一步了解 JaCoCo JaCoCo,即 Java Code Coverage,是一款开源的 Java 代码覆盖率统计工具。 它由 EclEmma 团队根据多年来使用和集成现有库的经验教训而创建。
JaCoCo 愿景 JaCoCo 应该为基于 Java VM 的环境中的代码覆盖率分析提供标准技术。 重点是提供一个轻量级的、灵活的、文档良好的库,以便与各种构建和开发工具集成。
JaCoCo 产品功能 指令(C0)、分支(C1)、行、方法、类型和圈复杂度的覆盖率分析。 基于 Java 字节码,因此也可以在没有源文件的情况下工作。 通过基于 Java agent 的实时检测进行简单集成。其他集成场景(如自定义类加载器)也可以通过 API 实现。 框架无关性:平稳地与基于 Java VM 的应用程序集成,比如普通 Java 程序、OSGi 框架、web 容器或 EJB 服务器。 兼容所有已发布的 Java 类文件版本。 支持不同的 JVM 语言。 支持几种报告格式( HTML、XML、CSV )。 远程协议和 JMX 控件,以便在任何时间点从覆盖率 agent 请求执行数据 dump 。 Ant 任务,用于收集和管理执行数据并创建结构化覆盖报告。 Maven 插件,用于收集覆盖信息并在Maven构建中创建报告。 非功能特性 使用简单和与现有构建脚本和工具集成。 良好的性能和最小的运行时开销,特别是对大型项目。 轻量级实现,对外部库和系统资源的依赖性最小。 全面的文档。 完整文档化的 API ( JavaDoc ) 和用于与其他工具集成的示例。 回归测试基于 JUnit 测试用例,具有完整的功能测试覆盖率。 对 JaCoCo 可以与现有构建脚本和工具进行集成这里做进一步说明: 官方提供了 Java API、Java Agent 、CLI、Ant 、Maven、Eclipse 这几种集成方式; 第三方提供了诸如与 Gradle、IDEA、Jenkins 等其它工具的集成方式。</description>
</item>
</channel>
</rss>
\ No newline at end of file
<!DOCTYPE html><html><head><title>https://jenkins-zh.cn/tags/jacoco/</title><link rel="canonical" href="https://jenkins-zh.cn/tags/jacoco/"/><meta name="robots" content="noindex"><meta charset="utf-8" /><meta http-equiv="refresh" content="0; url=https://jenkins-zh.cn/tags/jacoco/" /></head></html>
\ No newline at end of file
......@@ -35,7 +35,7 @@
<meta property="og:type" content="website" />
<meta property="og:url" content="https://jenkins-zh.cn/tags/jenkins/" />
<meta property="og:updated_time" content="2019-05-20T00:00:00&#43;00:00"/>
<meta property="og:updated_time" content="2019-05-22T00:00:00&#43;00:00"/>
<meta itemprop="name" content="Jenkins">
<meta itemprop="description" content="">
......@@ -185,6 +185,33 @@ var trackOutboundLink = function(id, url) {
<div class="bg-white mb2 pa3 pa4-l gray">
<h1 class="near-black f3">
<a href="/wechat/articles/2019/05/2019-05-22-jacoco-coverage-for-functional-test/" class="link primary-color dim">基于 Jenkins &#43; JaCoCo 实现功能测试代码覆盖率统计</a>
</h1>
<div class="lh-copy links">
本文对 JaCoCo 进行简要介绍,并借助 Jenkins 实现功能测试代码覆盖率统计
<a href="/wechat/articles/2019/05/2019-05-22-jacoco-coverage-for-functional-test/" class="f6 mt2 db link primary-color dim">
查看更多 &raquo;
</a>
</div>
</div>
</div>
<div class="relative weight-0" style="max-width: 350px">
<div class="bg-white mb2 pa3 pa4-l gray">
<h1 class="near-black f3">
<a href="/wechat/articles/2019/05/2019-05-20-jenkins-ansible-springboot/" class="link primary-color dim">使用 Jenkins &#43; Ansible 实现 Spring Boot 自动化部署101</a>
</h1>
......
......@@ -6,11 +6,25 @@
<description>Recent content in Jenkins on Jenkins 中文社区</description>
<generator>Hugo -- gohugo.io</generator>
<language>zh-CN</language>
<lastBuildDate>Mon, 20 May 2019 00:00:00 +0000</lastBuildDate>
<lastBuildDate>Wed, 22 May 2019 00:00:00 +0000</lastBuildDate>
<atom:link href="https://jenkins-zh.cn/tags/jenkins/index.xml" rel="self" type="application/rss+xml" />
<item>
<title>基于 Jenkins &#43; JaCoCo 实现功能测试代码覆盖率统计</title>
<link>https://jenkins-zh.cn/wechat/articles/2019/05/2019-05-22-jacoco-coverage-for-functional-test/</link>
<pubDate>Wed, 22 May 2019 00:00:00 +0000</pubDate>
<guid>https://jenkins-zh.cn/wechat/articles/2019/05/2019-05-22-jacoco-coverage-for-functional-test/</guid>
<description>使用 JaCoCo 统计功能测试代码覆盖率? 对于 JaCoCo,有所了解但又不是很熟悉。 &amp;ldquo;有所了解&amp;rdquo;指的是在 CI 实践中已经使用 JaCoCo 对单元测试代码覆盖率统计: 当代码 push 到代码仓库后,用 JaCoCo 进行单元测试代码覆盖率统计,并将相应数据推送到 SonarQube。 &amp;ldquo;不是很熟&amp;rdquo;指的是应用场景也仅限于此,并未进行过多研究与实践。
前不久,有测试同事提出,想要在实际测试时,用 JaCoCo 统计功能测试代码覆盖率。 其主要目的是在经过功能测试后,通过查看代码覆盖率统计的相关指标,增强对软件质量的信心。 经查阅资料,证明这是可行的。
由于对 JaCoCo 不甚了解,于是查阅官网资料对 JaCoCo 进一步了解。
进一步了解 JaCoCo JaCoCo,即 Java Code Coverage,是一款开源的 Java 代码覆盖率统计工具。 它由 EclEmma 团队根据多年来使用和集成现有库的经验教训而创建。
JaCoCo 愿景 JaCoCo 应该为基于 Java VM 的环境中的代码覆盖率分析提供标准技术。 重点是提供一个轻量级的、灵活的、文档良好的库,以便与各种构建和开发工具集成。
JaCoCo 产品功能 指令(C0)、分支(C1)、行、方法、类型和圈复杂度的覆盖率分析。 基于 Java 字节码,因此也可以在没有源文件的情况下工作。 通过基于 Java agent 的实时检测进行简单集成。其他集成场景(如自定义类加载器)也可以通过 API 实现。 框架无关性:平稳地与基于 Java VM 的应用程序集成,比如普通 Java 程序、OSGi 框架、web 容器或 EJB 服务器。 兼容所有已发布的 Java 类文件版本。 支持不同的 JVM 语言。 支持几种报告格式( HTML、XML、CSV )。 远程协议和 JMX 控件,以便在任何时间点从覆盖率 agent 请求执行数据 dump 。 Ant 任务,用于收集和管理执行数据并创建结构化覆盖报告。 Maven 插件,用于收集覆盖信息并在Maven构建中创建报告。 非功能特性 使用简单和与现有构建脚本和工具集成。 良好的性能和最小的运行时开销,特别是对大型项目。 轻量级实现,对外部库和系统资源的依赖性最小。 全面的文档。 完整文档化的 API ( JavaDoc ) 和用于与其他工具集成的示例。 回归测试基于 JUnit 测试用例,具有完整的功能测试覆盖率。 对 JaCoCo 可以与现有构建脚本和工具进行集成这里做进一步说明: 官方提供了 Java API、Java Agent 、CLI、Ant 、Maven、Eclipse 这几种集成方式; 第三方提供了诸如与 Gradle、IDEA、Jenkins 等其它工具的集成方式。</description>
</item>
<item>
<title>使用 Jenkins &#43; Ansible 实现 Spring Boot 自动化部署101</title>
<link>https://jenkins-zh.cn/wechat/articles/2019/05/2019-05-20-jenkins-ansible-springboot/</link>
......
......@@ -35,7 +35,7 @@
<meta property="og:type" content="website" />
<meta property="og:url" content="https://jenkins-zh.cn/tags/jenkins/" />
<meta property="og:updated_time" content="2019-04-26T00:00:00&#43;00:00"/>
<meta property="og:updated_time" content="2019-04-29T00:00:00&#43;00:00"/>
<meta itemprop="name" content="Jenkins">
<meta itemprop="description" content="">
......@@ -185,6 +185,33 @@ var trackOutboundLink = function(id, url) {
<div class="bg-white mb2 pa3 pa4-l gray">
<h1 class="near-black f3">
<a href="/wechat/articles/2019/05/2019-05-22-jacoco-coverage-for-functional-test/" class="link primary-color dim">基于 Jenkins &#43; JaCoCo 实现功能测试代码覆盖率统计</a>
</h1>
<div class="lh-copy links">
本文对 JaCoCo 进行简要介绍,并借助 Jenkins 实现功能测试代码覆盖率统计
<a href="/wechat/articles/2019/05/2019-05-22-jacoco-coverage-for-functional-test/" class="f6 mt2 db link primary-color dim">
查看更多 &raquo;
</a>
</div>
</div>
</div>
<div class="relative weight-0" style="max-width: 350px">
<div class="bg-white mb2 pa3 pa4-l gray">
<h1 class="near-black f3">
<a href="/wechat/articles/2019/05/2019-05-20-jenkins-ansible-springboot/" class="link primary-color dim">使用 Jenkins &#43; Ansible 实现 Spring Boot 自动化部署101</a>
</h1>
......
......@@ -35,7 +35,7 @@
<meta property="og:type" content="website" />
<meta property="og:url" content="https://jenkins-zh.cn/tags/jenkins/" />
<meta property="og:updated_time" content="2019-03-06T00:00:00&#43;00:00"/>
<meta property="og:updated_time" content="2019-03-13T00:00:00&#43;00:00"/>
<meta itemprop="name" content="Jenkins">
<meta itemprop="description" content="">
......@@ -185,6 +185,33 @@ var trackOutboundLink = function(id, url) {
<div class="bg-white mb2 pa3 pa4-l gray">
<h1 class="near-black f3">
<a href="/wechat/articles/2019/05/2019-05-22-jacoco-coverage-for-functional-test/" class="link primary-color dim">基于 Jenkins &#43; JaCoCo 实现功能测试代码覆盖率统计</a>
</h1>
<div class="lh-copy links">
本文对 JaCoCo 进行简要介绍,并借助 Jenkins 实现功能测试代码覆盖率统计
<a href="/wechat/articles/2019/05/2019-05-22-jacoco-coverage-for-functional-test/" class="f6 mt2 db link primary-color dim">
查看更多 &raquo;
</a>
</div>
</div>
</div>
<div class="relative weight-0" style="max-width: 350px">
<div class="bg-white mb2 pa3 pa4-l gray">
<h1 class="near-black f3">
<a href="/wechat/articles/2019/05/2019-05-20-jenkins-ansible-springboot/" class="link primary-color dim">使用 Jenkins &#43; Ansible 实现 Spring Boot 自动化部署101</a>
</h1>
......
......@@ -445,8 +445,8 @@ f6 ph3 pv1 br2 dib tc ttu mv3 bg-primary-color white hover-bg-green link
<li class="db dib-l mb2 mr3">
<a href="/wechat/articles/2019/05/2019-05-20-jenkins-ansible-springboot/" class="link">
使用 Jenkins &#43; Ansible 实现 Spring Boot 自动化部署101
<a href="/wechat/articles/2019/05/2019-05-22-jacoco-coverage-for-functional-test/" class="link">
基于 Jenkins &#43; JaCoCo 实现功能测试代码覆盖率统计
</a>
</li>
......@@ -457,6 +457,15 @@ f6 ph3 pv1 br2 dib tc ttu mv3 bg-primary-color white hover-bg-green link
</li>
<li class="db dib-l mb2 mr3">
<a href="/wechat/articles/2019/05/2019-05-20-jenkins-ansible-springboot/" class="link">
使用 Jenkins &#43; Ansible 实现 Spring Boot 自动化部署101
</a>
</li>
<li class="db dib-l mb2 mr3">
<a href="/wechat/articles/2019/05/2019-05-17-from-jenkins-to-jenkins-x/" class="link">
从 Jenkins 到 Jenkins X
......
......@@ -389,8 +389,8 @@ f6 ph3 pv1 br2 dib tc ttu mv3 bg-primary-color white hover-bg-green link
<li class="db dib-l mb2 mr3">
<a href="/wechat/articles/2019/05/2019-05-20-jenkins-ansible-springboot/" class="link">
使用 Jenkins &#43; Ansible 实现 Spring Boot 自动化部署101
<a href="/wechat/articles/2019/05/2019-05-22-jacoco-coverage-for-functional-test/" class="link">
基于 Jenkins &#43; JaCoCo 实现功能测试代码覆盖率统计
</a>
</li>
......@@ -401,6 +401,15 @@ f6 ph3 pv1 br2 dib tc ttu mv3 bg-primary-color white hover-bg-green link
</li>
<li class="db dib-l mb2 mr3">
<a href="/wechat/articles/2019/05/2019-05-20-jenkins-ansible-springboot/" class="link">
使用 Jenkins &#43; Ansible 实现 Spring Boot 自动化部署101
</a>
</li>
<li class="db dib-l mb2 mr3">
<a href="/wechat/articles/2019/05/2019-05-17-from-jenkins-to-jenkins-x/" class="link">
从 Jenkins 到 Jenkins X
......
......@@ -546,8 +546,8 @@ f6 ph3 pv1 br2 dib tc ttu mv3 bg-primary-color white hover-bg-green link
<li class="db dib-l mb2 mr3">
<a href="/wechat/articles/2019/05/2019-05-20-jenkins-ansible-springboot/" class="link">
使用 Jenkins &#43; Ansible 实现 Spring Boot 自动化部署101
<a href="/wechat/articles/2019/05/2019-05-22-jacoco-coverage-for-functional-test/" class="link">
基于 Jenkins &#43; JaCoCo 实现功能测试代码覆盖率统计
</a>
</li>
......@@ -558,6 +558,15 @@ f6 ph3 pv1 br2 dib tc ttu mv3 bg-primary-color white hover-bg-green link
</li>
<li class="db dib-l mb2 mr3">
<a href="/wechat/articles/2019/05/2019-05-20-jenkins-ansible-springboot/" class="link">
使用 Jenkins &#43; Ansible 实现 Spring Boot 自动化部署101
</a>
</li>
<li class="db dib-l mb2 mr3">
<a href="/wechat/articles/2019/05/2019-05-17-from-jenkins-to-jenkins-x/" class="link">
从 Jenkins 到 Jenkins X
......
......@@ -468,8 +468,8 @@ f6 ph3 pv1 br2 dib tc ttu mv3 bg-primary-color white hover-bg-green link
<li class="db dib-l mb2 mr3">
<a href="/wechat/articles/2019/05/2019-05-20-jenkins-ansible-springboot/" class="link">
使用 Jenkins &#43; Ansible 实现 Spring Boot 自动化部署101
<a href="/wechat/articles/2019/05/2019-05-22-jacoco-coverage-for-functional-test/" class="link">
基于 Jenkins &#43; JaCoCo 实现功能测试代码覆盖率统计
</a>
</li>
......@@ -480,6 +480,15 @@ f6 ph3 pv1 br2 dib tc ttu mv3 bg-primary-color white hover-bg-green link
</li>
<li class="db dib-l mb2 mr3">
<a href="/wechat/articles/2019/05/2019-05-20-jenkins-ansible-springboot/" class="link">
使用 Jenkins &#43; Ansible 实现 Spring Boot 自动化部署101
</a>
</li>
<li class="db dib-l mb2 mr3">
<a href="/wechat/articles/2019/05/2019-05-17-from-jenkins-to-jenkins-x/" class="link">
从 Jenkins 到 Jenkins X
......
......@@ -478,8 +478,8 @@ f6 ph3 pv1 br2 dib tc ttu mv3 bg-primary-color white hover-bg-green link
<li class="db dib-l mb2 mr3">
<a href="/wechat/articles/2019/05/2019-05-20-jenkins-ansible-springboot/" class="link">
使用 Jenkins &#43; Ansible 实现 Spring Boot 自动化部署101
<a href="/wechat/articles/2019/05/2019-05-22-jacoco-coverage-for-functional-test/" class="link">
基于 Jenkins &#43; JaCoCo 实现功能测试代码覆盖率统计
</a>
</li>
......@@ -490,6 +490,15 @@ f6 ph3 pv1 br2 dib tc ttu mv3 bg-primary-color white hover-bg-green link
</li>
<li class="db dib-l mb2 mr3">
<a href="/wechat/articles/2019/05/2019-05-20-jenkins-ansible-springboot/" class="link">
使用 Jenkins &#43; Ansible 实现 Spring Boot 自动化部署101
</a>
</li>
<li class="db dib-l mb2 mr3">
<a href="/wechat/articles/2019/05/2019-05-17-from-jenkins-to-jenkins-x/" class="link">
从 Jenkins 到 Jenkins X
......
......@@ -422,8 +422,8 @@ f6 ph3 pv1 br2 dib tc ttu mv3 bg-primary-color white hover-bg-green link
<li class="db dib-l mb2 mr3">
<a href="/wechat/articles/2019/05/2019-05-20-jenkins-ansible-springboot/" class="link">
使用 Jenkins &#43; Ansible 实现 Spring Boot 自动化部署101
<a href="/wechat/articles/2019/05/2019-05-22-jacoco-coverage-for-functional-test/" class="link">
基于 Jenkins &#43; JaCoCo 实现功能测试代码覆盖率统计
</a>
</li>
......@@ -434,6 +434,15 @@ f6 ph3 pv1 br2 dib tc ttu mv3 bg-primary-color white hover-bg-green link
</li>
<li class="db dib-l mb2 mr3">
<a href="/wechat/articles/2019/05/2019-05-20-jenkins-ansible-springboot/" class="link">
使用 Jenkins &#43; Ansible 实现 Spring Boot 自动化部署101
</a>
</li>
<li class="db dib-l mb2 mr3">
<a href="/wechat/articles/2019/05/2019-05-17-from-jenkins-to-jenkins-x/" class="link">
从 Jenkins 到 Jenkins X
......
......@@ -440,8 +440,8 @@ f6 ph3 pv1 br2 dib tc ttu mv3 bg-primary-color white hover-bg-green link
<li class="db dib-l mb2 mr3">
<a href="/wechat/articles/2019/05/2019-05-17-from-jenkins-to-jenkins-x/" class="link">
从 Jenkins 到 Jenkins X
<a href="/wechat/articles/2019/05/2019-05-22-jacoco-coverage-for-functional-test/" class="link">
基于 Jenkins &#43; JaCoCo 实现功能测试代码覆盖率统计
</a>
</li>
......@@ -452,6 +452,15 @@ f6 ph3 pv1 br2 dib tc ttu mv3 bg-primary-color white hover-bg-green link
</li>
<li class="db dib-l mb2 mr3">
<a href="/wechat/articles/2019/05/2019-05-17-from-jenkins-to-jenkins-x/" class="link">
从 Jenkins 到 Jenkins X
</a>
</li>
<li class="db dib-l mb2 mr3">
<a href="/wechat/articles/2019/05/2019-05-16-cloud-agnostic-automated-cicd-for-k8s/" class="link">
与云无关的用于 Kubernetes 的自动化 CI/CD
......
......@@ -511,8 +511,8 @@ f6 ph3 pv1 br2 dib tc ttu mv3 bg-primary-color white hover-bg-green link
<li class="db dib-l mb2 mr3">
<a href="/wechat/articles/2019/05/2019-05-20-jenkins-ansible-springboot/" class="link">
使用 Jenkins &#43; Ansible 实现 Spring Boot 自动化部署101
<a href="/wechat/articles/2019/05/2019-05-22-jacoco-coverage-for-functional-test/" class="link">
基于 Jenkins &#43; JaCoCo 实现功能测试代码覆盖率统计
</a>
</li>
......@@ -523,6 +523,15 @@ f6 ph3 pv1 br2 dib tc ttu mv3 bg-primary-color white hover-bg-green link
</li>
<li class="db dib-l mb2 mr3">
<a href="/wechat/articles/2019/05/2019-05-20-jenkins-ansible-springboot/" class="link">
使用 Jenkins &#43; Ansible 实现 Spring Boot 自动化部署101
</a>
</li>
<li class="db dib-l mb2 mr3">
<a href="/wechat/articles/2019/05/2019-05-17-from-jenkins-to-jenkins-x/" class="link">
从 Jenkins 到 Jenkins X
......
......@@ -436,8 +436,8 @@ f6 ph3 pv1 br2 dib tc ttu mv3 bg-primary-color white hover-bg-green link
<li class="db dib-l mb2 mr3">
<a href="/wechat/articles/2019/05/2019-05-20-jenkins-ansible-springboot/" class="link">
使用 Jenkins &#43; Ansible 实现 Spring Boot 自动化部署101
<a href="/wechat/articles/2019/05/2019-05-22-jacoco-coverage-for-functional-test/" class="link">
基于 Jenkins &#43; JaCoCo 实现功能测试代码覆盖率统计
</a>
</li>
......@@ -448,6 +448,15 @@ f6 ph3 pv1 br2 dib tc ttu mv3 bg-primary-color white hover-bg-green link
</li>
<li class="db dib-l mb2 mr3">
<a href="/wechat/articles/2019/05/2019-05-20-jenkins-ansible-springboot/" class="link">
使用 Jenkins &#43; Ansible 实现 Spring Boot 自动化部署101
</a>
</li>
<li class="db dib-l mb2 mr3">
<a href="/wechat/articles/2019/05/2019-05-17-from-jenkins-to-jenkins-x/" class="link">
从 Jenkins 到 Jenkins X
......
......@@ -580,8 +580,8 @@ f6 ph3 pv1 br2 dib tc ttu mv3 bg-primary-color white hover-bg-green link
<li class="db dib-l mb2 mr3">
<a href="/wechat/articles/2019/05/2019-05-20-jenkins-ansible-springboot/" class="link">
使用 Jenkins &#43; Ansible 实现 Spring Boot 自动化部署101
<a href="/wechat/articles/2019/05/2019-05-22-jacoco-coverage-for-functional-test/" class="link">
基于 Jenkins &#43; JaCoCo 实现功能测试代码覆盖率统计
</a>
</li>
......@@ -592,6 +592,15 @@ f6 ph3 pv1 br2 dib tc ttu mv3 bg-primary-color white hover-bg-green link
</li>
<li class="db dib-l mb2 mr3">
<a href="/wechat/articles/2019/05/2019-05-20-jenkins-ansible-springboot/" class="link">
使用 Jenkins &#43; Ansible 实现 Spring Boot 自动化部署101
</a>
</li>
<li class="db dib-l mb2 mr3">
<a href="/wechat/articles/2019/05/2019-05-17-from-jenkins-to-jenkins-x/" class="link">
从 Jenkins 到 Jenkins X
......
......@@ -430,8 +430,8 @@ f6 ph3 pv1 br2 dib tc ttu mv3 bg-primary-color white hover-bg-green link
<li class="db dib-l mb2 mr3">
<a href="/wechat/articles/2019/05/2019-05-20-jenkins-ansible-springboot/" class="link">
使用 Jenkins &#43; Ansible 实现 Spring Boot 自动化部署101
<a href="/wechat/articles/2019/05/2019-05-22-jacoco-coverage-for-functional-test/" class="link">
基于 Jenkins &#43; JaCoCo 实现功能测试代码覆盖率统计
</a>
</li>
......@@ -442,6 +442,15 @@ f6 ph3 pv1 br2 dib tc ttu mv3 bg-primary-color white hover-bg-green link
</li>
<li class="db dib-l mb2 mr3">
<a href="/wechat/articles/2019/05/2019-05-20-jenkins-ansible-springboot/" class="link">
使用 Jenkins &#43; Ansible 实现 Spring Boot 自动化部署101
</a>
</li>
<li class="db dib-l mb2 mr3">
<a href="/wechat/articles/2019/05/2019-05-17-from-jenkins-to-jenkins-x/" class="link">
从 Jenkins 到 Jenkins X
......
......@@ -427,8 +427,8 @@ f6 ph3 pv1 br2 dib tc ttu mv3 bg-primary-color white hover-bg-green link
<li class="db dib-l mb2 mr3">
<a href="/wechat/articles/2019/05/2019-05-17-from-jenkins-to-jenkins-x/" class="link">
从 Jenkins 到 Jenkins X
<a href="/wechat/articles/2019/05/2019-05-22-jacoco-coverage-for-functional-test/" class="link">
基于 Jenkins &#43; JaCoCo 实现功能测试代码覆盖率统计
</a>
</li>
......@@ -439,6 +439,15 @@ f6 ph3 pv1 br2 dib tc ttu mv3 bg-primary-color white hover-bg-green link
</li>
<li class="db dib-l mb2 mr3">
<a href="/wechat/articles/2019/05/2019-05-17-from-jenkins-to-jenkins-x/" class="link">
从 Jenkins 到 Jenkins X
</a>
</li>
<li class="db dib-l mb2 mr3">
<a href="/wechat/articles/2019/05/2019-05-16-cloud-agnostic-automated-cicd-for-k8s/" class="link">
与云无关的用于 Kubernetes 的自动化 CI/CD
......
......@@ -604,8 +604,8 @@ f6 ph3 pv1 br2 dib tc ttu mv3 bg-primary-color white hover-bg-green link
<li class="db dib-l mb2 mr3">
<a href="/wechat/articles/2019/05/2019-05-20-jenkins-ansible-springboot/" class="link">
使用 Jenkins &#43; Ansible 实现 Spring Boot 自动化部署101
<a href="/wechat/articles/2019/05/2019-05-22-jacoco-coverage-for-functional-test/" class="link">
基于 Jenkins &#43; JaCoCo 实现功能测试代码覆盖率统计
</a>
</li>
......@@ -616,6 +616,15 @@ f6 ph3 pv1 br2 dib tc ttu mv3 bg-primary-color white hover-bg-green link
</li>
<li class="db dib-l mb2 mr3">
<a href="/wechat/articles/2019/05/2019-05-20-jenkins-ansible-springboot/" class="link">
使用 Jenkins &#43; Ansible 实现 Spring Boot 自动化部署101
</a>
</li>
<li class="db dib-l mb2 mr3">
<a href="/wechat/articles/2019/05/2019-05-17-from-jenkins-to-jenkins-x/" class="link">
从 Jenkins 到 Jenkins X
......
......@@ -398,8 +398,8 @@ f6 ph3 pv1 br2 dib tc ttu mv3 bg-primary-color white hover-bg-green link
<li class="db dib-l mb2 mr3">
<a href="/wechat/articles/2019/05/2019-05-20-jenkins-ansible-springboot/" class="link">
使用 Jenkins &#43; Ansible 实现 Spring Boot 自动化部署101
<a href="/wechat/articles/2019/05/2019-05-22-jacoco-coverage-for-functional-test/" class="link">
基于 Jenkins &#43; JaCoCo 实现功能测试代码覆盖率统计
</a>
</li>
......@@ -410,6 +410,15 @@ f6 ph3 pv1 br2 dib tc ttu mv3 bg-primary-color white hover-bg-green link
</li>
<li class="db dib-l mb2 mr3">
<a href="/wechat/articles/2019/05/2019-05-20-jenkins-ansible-springboot/" class="link">
使用 Jenkins &#43; Ansible 实现 Spring Boot 自动化部署101
</a>
</li>
<li class="db dib-l mb2 mr3">
<a href="/wechat/articles/2019/05/2019-05-17-from-jenkins-to-jenkins-x/" class="link">
从 Jenkins 到 Jenkins X
......
......@@ -623,8 +623,8 @@ f6 ph3 pv1 br2 dib tc ttu mv3 bg-primary-color white hover-bg-green link
<li class="db dib-l mb2 mr3">
<a href="/wechat/articles/2019/05/2019-05-20-jenkins-ansible-springboot/" class="link">
使用 Jenkins &#43; Ansible 实现 Spring Boot 自动化部署101
<a href="/wechat/articles/2019/05/2019-05-22-jacoco-coverage-for-functional-test/" class="link">
基于 Jenkins &#43; JaCoCo 实现功能测试代码覆盖率统计
</a>
</li>
......@@ -635,6 +635,15 @@ f6 ph3 pv1 br2 dib tc ttu mv3 bg-primary-color white hover-bg-green link
</li>
<li class="db dib-l mb2 mr3">
<a href="/wechat/articles/2019/05/2019-05-20-jenkins-ansible-springboot/" class="link">
使用 Jenkins &#43; Ansible 实现 Spring Boot 自动化部署101
</a>
</li>
<li class="db dib-l mb2 mr3">
<a href="/wechat/articles/2019/05/2019-05-17-from-jenkins-to-jenkins-x/" class="link">
从 Jenkins 到 Jenkins X
......
......@@ -353,8 +353,8 @@ f6 ph3 pv1 br2 dib tc ttu mv3 bg-primary-color white hover-bg-green link
<li class="db dib-l mb2 mr3">
<a href="/wechat/articles/2019/05/2019-05-20-jenkins-ansible-springboot/" class="link">
使用 Jenkins &#43; Ansible 实现 Spring Boot 自动化部署101
<a href="/wechat/articles/2019/05/2019-05-22-jacoco-coverage-for-functional-test/" class="link">
基于 Jenkins &#43; JaCoCo 实现功能测试代码覆盖率统计
</a>
</li>
......@@ -365,6 +365,15 @@ f6 ph3 pv1 br2 dib tc ttu mv3 bg-primary-color white hover-bg-green link
</li>
<li class="db dib-l mb2 mr3">
<a href="/wechat/articles/2019/05/2019-05-20-jenkins-ansible-springboot/" class="link">
使用 Jenkins &#43; Ansible 实现 Spring Boot 自动化部署101
</a>
</li>
<li class="db dib-l mb2 mr3">
<a href="/wechat/articles/2019/05/2019-05-17-from-jenkins-to-jenkins-x/" class="link">
从 Jenkins 到 Jenkins X
......
......@@ -349,8 +349,8 @@ f6 ph3 pv1 br2 dib tc ttu mv3 bg-primary-color white hover-bg-green link
<li class="db dib-l mb2 mr3">
<a href="/wechat/articles/2019/05/2019-05-20-jenkins-ansible-springboot/" class="link">
使用 Jenkins &#43; Ansible 实现 Spring Boot 自动化部署101
<a href="/wechat/articles/2019/05/2019-05-22-jacoco-coverage-for-functional-test/" class="link">
基于 Jenkins &#43; JaCoCo 实现功能测试代码覆盖率统计
</a>
</li>
......@@ -361,6 +361,15 @@ f6 ph3 pv1 br2 dib tc ttu mv3 bg-primary-color white hover-bg-green link
</li>
<li class="db dib-l mb2 mr3">
<a href="/wechat/articles/2019/05/2019-05-20-jenkins-ansible-springboot/" class="link">
使用 Jenkins &#43; Ansible 实现 Spring Boot 自动化部署101
</a>
</li>
<li class="db dib-l mb2 mr3">
<a href="/wechat/articles/2019/05/2019-05-17-from-jenkins-to-jenkins-x/" class="link">
从 Jenkins 到 Jenkins X
......
......@@ -421,8 +421,8 @@ f6 ph3 pv1 br2 dib tc ttu mv3 bg-primary-color white hover-bg-green link
<li class="db dib-l mb2 mr3">
<a href="/wechat/articles/2019/05/2019-05-20-jenkins-ansible-springboot/" class="link">
使用 Jenkins &#43; Ansible 实现 Spring Boot 自动化部署101
<a href="/wechat/articles/2019/05/2019-05-22-jacoco-coverage-for-functional-test/" class="link">
基于 Jenkins &#43; JaCoCo 实现功能测试代码覆盖率统计
</a>
</li>
......@@ -433,6 +433,15 @@ f6 ph3 pv1 br2 dib tc ttu mv3 bg-primary-color white hover-bg-green link
</li>
<li class="db dib-l mb2 mr3">
<a href="/wechat/articles/2019/05/2019-05-20-jenkins-ansible-springboot/" class="link">
使用 Jenkins &#43; Ansible 实现 Spring Boot 自动化部署101
</a>
</li>
<li class="db dib-l mb2 mr3">
<a href="/wechat/articles/2019/05/2019-05-17-from-jenkins-to-jenkins-x/" class="link">
从 Jenkins 到 Jenkins X
......
......@@ -365,8 +365,8 @@ f6 ph3 pv1 br2 dib tc ttu mv3 bg-primary-color white hover-bg-green link
<li class="db dib-l mb2 mr3">
<a href="/wechat/articles/2019/05/2019-05-20-jenkins-ansible-springboot/" class="link">
使用 Jenkins &#43; Ansible 实现 Spring Boot 自动化部署101
<a href="/wechat/articles/2019/05/2019-05-22-jacoco-coverage-for-functional-test/" class="link">
基于 Jenkins &#43; JaCoCo 实现功能测试代码覆盖率统计
</a>
</li>
......@@ -377,6 +377,15 @@ f6 ph3 pv1 br2 dib tc ttu mv3 bg-primary-color white hover-bg-green link
</li>
<li class="db dib-l mb2 mr3">
<a href="/wechat/articles/2019/05/2019-05-20-jenkins-ansible-springboot/" class="link">
使用 Jenkins &#43; Ansible 实现 Spring Boot 自动化部署101
</a>
</li>
<li class="db dib-l mb2 mr3">
<a href="/wechat/articles/2019/05/2019-05-17-from-jenkins-to-jenkins-x/" class="link">
从 Jenkins 到 Jenkins X
......
......@@ -557,8 +557,8 @@ f6 ph3 pv1 br2 dib tc ttu mv3 bg-primary-color white hover-bg-green link
<li class="db dib-l mb2 mr3">
<a href="/wechat/articles/2019/05/2019-05-20-jenkins-ansible-springboot/" class="link">
使用 Jenkins &#43; Ansible 实现 Spring Boot 自动化部署101
<a href="/wechat/articles/2019/05/2019-05-22-jacoco-coverage-for-functional-test/" class="link">
基于 Jenkins &#43; JaCoCo 实现功能测试代码覆盖率统计
</a>
</li>
......@@ -569,6 +569,15 @@ f6 ph3 pv1 br2 dib tc ttu mv3 bg-primary-color white hover-bg-green link
</li>
<li class="db dib-l mb2 mr3">
<a href="/wechat/articles/2019/05/2019-05-20-jenkins-ansible-springboot/" class="link">
使用 Jenkins &#43; Ansible 实现 Spring Boot 自动化部署101
</a>
</li>
......
......@@ -235,6 +235,14 @@ var trackOutboundLink = function(id, url) {
</a>
<a href="https://jenkins-zh.cn/wechat/articles/2019/05/2019-05-22-jacoco-coverage-for-functional-test/" class="dib f6 pl1 hover-bg-light-gray br-100" title="基于 Jenkins &#43; JaCoCo 实现功能测试代码覆盖率统计 ">
<svg class="fill-current" height="30px" viewBox="0 0 24 24" width="30px" xmlns="http://www.w3.org/2000/svg">
<path d="M15.41 7.41L14 6l-6 6 6 6 1.41-1.41L10.83 12z"/>
<path d="M0 0h24v24H0z" fill="none"/>
</svg>
</a>
<a href="https://jenkins-zh.cn/wechat/articles/2019/05/2019-05-20-translation-norms/" class="dib f6 pr1 hover-bg-light-gray br-100" title="转载规范及声明">
......@@ -563,6 +571,12 @@ f6 ph3 pv1 br2 dib tc ttu mv3 bg-primary-color white hover-bg-green link
<li class="db dib-l mb2 mr3">
<a href="/wechat/articles/2019/05/2019-05-22-jacoco-coverage-for-functional-test/" class="link">
基于 Jenkins &#43; JaCoCo 实现功能测试代码覆盖率统计
</a>
</li>
<li class="db b mt4 mb2 mr2">
......@@ -570,6 +584,9 @@ f6 ph3 pv1 br2 dib tc ttu mv3 bg-primary-color white hover-bg-green link
</li>
<li class="db dib-l mb2 mr3">
<a href="/wechat/articles/2019/05/2019-05-17-from-jenkins-to-jenkins-x/" class="link">
从 Jenkins 到 Jenkins X
......
......@@ -35,7 +35,7 @@
<meta property="og:type" content="website" />
<meta property="og:url" content="https://jenkins-zh.cn/wechat/" />
<meta property="og:updated_time" content="2019-05-20T00:00:00&#43;00:00"/>
<meta property="og:updated_time" content="2019-05-22T00:00:00&#43;00:00"/>
<meta itemprop="name" content="Wechats">
<meta itemprop="description" content="">
......@@ -185,6 +185,33 @@ var trackOutboundLink = function(id, url) {
<div class="bg-white mb2 pa3 pa4-l gray">
<h1 class="near-black f3">
<a href="/wechat/articles/2019/05/2019-05-22-jacoco-coverage-for-functional-test/" class="link primary-color dim">基于 Jenkins &#43; JaCoCo 实现功能测试代码覆盖率统计</a>
</h1>
<div class="lh-copy links">
本文对 JaCoCo 进行简要介绍,并借助 Jenkins 实现功能测试代码覆盖率统计
<a href="/wechat/articles/2019/05/2019-05-22-jacoco-coverage-for-functional-test/" class="f6 mt2 db link primary-color dim">
查看更多 &raquo;
</a>
</div>
</div>
</div>
<div class="relative weight-0" style="max-width: 350px">
<div class="bg-white mb2 pa3 pa4-l gray">
<h1 class="near-black f3">
<a href="/wechat/articles/2019/05/2019-05-20-jenkins-ansible-springboot/" class="link primary-color dim">使用 Jenkins &#43; Ansible 实现 Spring Boot 自动化部署101</a>
</h1>
......@@ -422,33 +449,6 @@ var trackOutboundLink = function(id, url) {
<div class="relative weight-0" style="max-width: 350px">
<div class="bg-white mb2 pa3 pa4-l gray">
<h1 class="near-black f3">
<a href="/wechat/articles/2019/05/2019-05-08-jenkins-plugin-develop-within-two-days-part02/" class="link primary-color dim">Jenkins 插件开发之旅:两天内从 idea 到发布(下篇)</a>
</h1>
<div class="lh-copy links">
两天内,从产生 idea 到编写插件,最后发布到 Jenkins 插件更新中心
<a href="/wechat/articles/2019/05/2019-05-08-jenkins-plugin-develop-within-two-days-part02/" class="f6 mt2 db link primary-color dim">
查看更多 &raquo;
</a>
</div>
</div>
</div>
</section>
</div>
......
......@@ -6,11 +6,25 @@
<description>Recent content in Wechats on Jenkins 中文社区</description>
<generator>Hugo -- gohugo.io</generator>
<language>zh-CN</language>
<lastBuildDate>Mon, 20 May 2019 00:00:00 +0000</lastBuildDate>
<lastBuildDate>Wed, 22 May 2019 00:00:00 +0000</lastBuildDate>
<atom:link href="https://jenkins-zh.cn/wechat/index.xml" rel="self" type="application/rss+xml" />
<item>
<title>基于 Jenkins &#43; JaCoCo 实现功能测试代码覆盖率统计</title>
<link>https://jenkins-zh.cn/wechat/articles/2019/05/2019-05-22-jacoco-coverage-for-functional-test/</link>
<pubDate>Wed, 22 May 2019 00:00:00 +0000</pubDate>
<guid>https://jenkins-zh.cn/wechat/articles/2019/05/2019-05-22-jacoco-coverage-for-functional-test/</guid>
<description>使用 JaCoCo 统计功能测试代码覆盖率? 对于 JaCoCo,有所了解但又不是很熟悉。 &amp;ldquo;有所了解&amp;rdquo;指的是在 CI 实践中已经使用 JaCoCo 对单元测试代码覆盖率统计: 当代码 push 到代码仓库后,用 JaCoCo 进行单元测试代码覆盖率统计,并将相应数据推送到 SonarQube。 &amp;ldquo;不是很熟&amp;rdquo;指的是应用场景也仅限于此,并未进行过多研究与实践。
前不久,有测试同事提出,想要在实际测试时,用 JaCoCo 统计功能测试代码覆盖率。 其主要目的是在经过功能测试后,通过查看代码覆盖率统计的相关指标,增强对软件质量的信心。 经查阅资料,证明这是可行的。
由于对 JaCoCo 不甚了解,于是查阅官网资料对 JaCoCo 进一步了解。
进一步了解 JaCoCo JaCoCo,即 Java Code Coverage,是一款开源的 Java 代码覆盖率统计工具。 它由 EclEmma 团队根据多年来使用和集成现有库的经验教训而创建。
JaCoCo 愿景 JaCoCo 应该为基于 Java VM 的环境中的代码覆盖率分析提供标准技术。 重点是提供一个轻量级的、灵活的、文档良好的库,以便与各种构建和开发工具集成。
JaCoCo 产品功能 指令(C0)、分支(C1)、行、方法、类型和圈复杂度的覆盖率分析。 基于 Java 字节码,因此也可以在没有源文件的情况下工作。 通过基于 Java agent 的实时检测进行简单集成。其他集成场景(如自定义类加载器)也可以通过 API 实现。 框架无关性:平稳地与基于 Java VM 的应用程序集成,比如普通 Java 程序、OSGi 框架、web 容器或 EJB 服务器。 兼容所有已发布的 Java 类文件版本。 支持不同的 JVM 语言。 支持几种报告格式( HTML、XML、CSV )。 远程协议和 JMX 控件,以便在任何时间点从覆盖率 agent 请求执行数据 dump 。 Ant 任务,用于收集和管理执行数据并创建结构化覆盖报告。 Maven 插件,用于收集覆盖信息并在Maven构建中创建报告。 非功能特性 使用简单和与现有构建脚本和工具集成。 良好的性能和最小的运行时开销,特别是对大型项目。 轻量级实现,对外部库和系统资源的依赖性最小。 全面的文档。 完整文档化的 API ( JavaDoc ) 和用于与其他工具集成的示例。 回归测试基于 JUnit 测试用例,具有完整的功能测试覆盖率。 对 JaCoCo 可以与现有构建脚本和工具进行集成这里做进一步说明: 官方提供了 Java API、Java Agent 、CLI、Ant 、Maven、Eclipse 这几种集成方式; 第三方提供了诸如与 Gradle、IDEA、Jenkins 等其它工具的集成方式。</description>
</item>
<item>
<title>使用 Jenkins &#43; Ansible 实现 Spring Boot 自动化部署101</title>
<link>https://jenkins-zh.cn/wechat/articles/2019/05/2019-05-20-jenkins-ansible-springboot/</link>
......
......@@ -35,7 +35,7 @@
<meta property="og:type" content="website" />
<meta property="og:url" content="https://jenkins-zh.cn/wechat/" />
<meta property="og:updated_time" content="2019-05-07T00:00:00&#43;00:00"/>
<meta property="og:updated_time" content="2019-05-08T00:00:00&#43;00:00"/>
<meta itemprop="name" content="Wechats">
<meta itemprop="description" content="">
......@@ -185,6 +185,33 @@ var trackOutboundLink = function(id, url) {
<div class="bg-white mb2 pa3 pa4-l gray">
<h1 class="near-black f3">
<a href="/wechat/articles/2019/05/2019-05-08-jenkins-plugin-develop-within-two-days-part02/" class="link primary-color dim">Jenkins 插件开发之旅:两天内从 idea 到发布(下篇)</a>
</h1>
<div class="lh-copy links">
两天内,从产生 idea 到编写插件,最后发布到 Jenkins 插件更新中心
<a href="/wechat/articles/2019/05/2019-05-08-jenkins-plugin-develop-within-two-days-part02/" class="f6 mt2 db link primary-color dim">
查看更多 &raquo;
</a>
</div>
</div>
</div>
<div class="relative weight-0" style="max-width: 350px">
<div class="bg-white mb2 pa3 pa4-l gray">
<h1 class="near-black f3">
<a href="/wechat/articles/2019/05/2019-05-07-jenkins-install-plugins-shell/" class="link primary-color dim">Jenkins 自动化安装插件</a>
</h1>
......@@ -422,33 +449,6 @@ var trackOutboundLink = function(id, url) {
<div class="relative weight-0" style="max-width: 350px">
<div class="bg-white mb2 pa3 pa4-l gray">
<h1 class="near-black f3">
<a href="/wechat/articles/2019/04/2019-04-22-jenkins-weekly-2.173/" class="link primary-color dim">Jenkins 2.173 发布通知</a>
</h1>
<div class="lh-copy links">
Jenkins 更新通知
<a href="/wechat/articles/2019/04/2019-04-22-jenkins-weekly-2.173/" class="f6 mt2 db link primary-color dim">
查看更多 &raquo;
</a>
</div>
</div>
</div>
</section>
</div>
......
......@@ -35,7 +35,7 @@
<meta property="og:type" content="website" />
<meta property="og:url" content="https://jenkins-zh.cn/wechat/" />
<meta property="og:updated_time" content="2019-04-19T00:00:00&#43;00:00"/>
<meta property="og:updated_time" content="2019-04-22T00:00:00&#43;00:00"/>
<meta itemprop="name" content="Wechats">
<meta itemprop="description" content="">
......@@ -185,6 +185,33 @@ var trackOutboundLink = function(id, url) {
<div class="bg-white mb2 pa3 pa4-l gray">
<h1 class="near-black f3">
<a href="/wechat/articles/2019/04/2019-04-22-jenkins-weekly-2.173/" class="link primary-color dim">Jenkins 2.173 发布通知</a>
</h1>
<div class="lh-copy links">
Jenkins 更新通知
<a href="/wechat/articles/2019/04/2019-04-22-jenkins-weekly-2.173/" class="f6 mt2 db link primary-color dim">
查看更多 &raquo;
</a>
</div>
</div>
</div>
<div class="relative weight-0" style="max-width: 350px">
<div class="bg-white mb2 pa3 pa4-l gray">
<h1 class="near-black f3">
<a href="/wechat/articles/2019/04/2019-04-19-the-business-value-of-cd/" class="link primary-color dim">持续交付的商业价值</a>
</h1>
......@@ -422,33 +449,6 @@ var trackOutboundLink = function(id, url) {
<div class="relative weight-0" style="max-width: 350px">
<div class="bg-white mb2 pa3 pa4-l gray">
<h1 class="near-black f3">
<a href="/wechat/articles/2019/03/2019-03-13-electron-pipeline-demo/" class="link primary-color dim">Electron 应用的流水线设计</a>
</h1>
<div class="lh-copy links">
跨平台构建的流水线 demo
<a href="/wechat/articles/2019/03/2019-03-13-electron-pipeline-demo/" class="f6 mt2 db link primary-color dim">
查看更多 &raquo;
</a>
</div>
</div>
</div>
</section>
</div>
......
......@@ -185,6 +185,33 @@ var trackOutboundLink = function(id, url) {
<div class="bg-white mb2 pa3 pa4-l gray">
<h1 class="near-black f3">
<a href="/wechat/articles/2019/03/2019-03-13-electron-pipeline-demo/" class="link primary-color dim">Electron 应用的流水线设计</a>
</h1>
<div class="lh-copy links">
跨平台构建的流水线 demo
<a href="/wechat/articles/2019/03/2019-03-13-electron-pipeline-demo/" class="f6 mt2 db link primary-color dim">
查看更多 &raquo;
</a>
</div>
</div>
</div>
<div class="relative weight-0" style="max-width: 350px">
<div class="bg-white mb2 pa3 pa4-l gray">
<h1 class="near-black f3">
<a href="/wechat/articles/2019/03/2019-03-13-gsoc2019-announcement/" class="link primary-color dim">Jenkins 已经被 Google Summer Of Code 2019 接受!</a>
</h1>
......@@ -427,38 +454,6 @@ TODO List Pick up a task from here, if you&rsquo;re interesting in contribution.
<div class="relative weight-0" style="max-width: 350px">
<div class="bg-white mb2 pa3 pa4-l gray">
<h1 class="near-black f3">
<a href="/wechat/articles/readme/" class="link primary-color dim"></a>
</h1>
<div class="lh-copy links">
这里存放的是 Jenkins 官方微信公众号文章,文件采用 Markdown 格式,但包含一些必要的描述性字段。文章的校对、审核、排期等都通过 Pull Request 来完成。PR 合并后会发布到 Jenkins 中文社区网站。
目录 文章以发布的排期来存放,层级为:年份/月份。如果月份为个位数的话,要以0开头,例如:01。
以文章的文件名前缀作为图片的目录,例如:文章的文件名为 2019-01-01-sample.md,我们需要在同级目录下创建文件夹 2019-05-01-sample , 并在里面保存当前文章中的图片(封面、插图等)。
排期 为了尽可能满足你期望的发布日期,可以自行选择,但同时需要满足如下的条件:
为保障大家有足够的时间进行 Review,建议排到一周以后 工作日 避免同一天有相同类型的文章 文件名 文件名前缀为“年月日”,中间部分需要以英文来描述。例如:2019-01-01-sample.md。
字段 文件中的字段,是为了描述文章相关的必要信息。具体的说明请参考:sample.md。
<a href="/wechat/articles/readme/" class="f6 mt2 db link primary-color dim">
查看更多 &raquo;
</a>
</div>
</div>
</div>
</section>
</div>
......
......@@ -184,6 +184,38 @@ var trackOutboundLink = function(id, url) {
<div class="bg-white mb2 pa3 pa4-l gray">
<h1 class="near-black f3">
<a href="/wechat/articles/readme/" class="link primary-color dim"></a>
</h1>
<div class="lh-copy links">
这里存放的是 Jenkins 官方微信公众号文章,文件采用 Markdown 格式,但包含一些必要的描述性字段。文章的校对、审核、排期等都通过 Pull Request 来完成。PR 合并后会发布到 Jenkins 中文社区网站。
目录 文章以发布的排期来存放,层级为:年份/月份。如果月份为个位数的话,要以0开头,例如:01。
以文章的文件名前缀作为图片的目录,例如:文章的文件名为 2019-01-01-sample.md,我们需要在同级目录下创建文件夹 2019-05-01-sample , 并在里面保存当前文章中的图片(封面、插图等)。
排期 为了尽可能满足你期望的发布日期,可以自行选择,但同时需要满足如下的条件:
为保障大家有足够的时间进行 Review,建议排到一周以后 工作日 避免同一天有相同类型的文章 文件名 文件名前缀为“年月日”,中间部分需要以英文来描述。例如:2019-01-01-sample.md。
字段 文件中的字段,是为了描述文章相关的必要信息。具体的说明请参考:sample.md。
<a href="/wechat/articles/readme/" class="f6 mt2 db link primary-color dim">
查看更多 &raquo;
</a>
</div>
</div>
</div>
<div class="relative weight-0" style="max-width: 350px">
<div class="bg-white mb2 pa3 pa4-l gray">
<h1 class="near-black f3">
<a href="/wechat/images/readme/" class="link primary-color dim"></a>
</h1>
......@@ -437,33 +469,6 @@ wechat: wechatid github: linuxsuren terms: - 2018-11-11 根据微信公众号
<div class="relative weight-0" style="max-width: 350px">
<div class="bg-white mb2 pa3 pa4-l gray">
<h1 class="near-black f3">
<a href="/wechat/articles/2018/12/2018-12-12-gasc/" class="link primary-color dim">Jenkins Configuration-as-Code: 看,我都不用手动配置</a>
</h1>
<div class="lh-copy links">
JCasC 允许我们在启动时或通过 web UI 按需在 Jenkins master 上应用一组 YAML 文件
<a href="/wechat/articles/2018/12/2018-12-12-gasc/" class="f6 mt2 db link primary-color dim">
查看更多 &raquo;
</a>
</div>
</div>
</div>
</section>
</div>
......
......@@ -184,6 +184,33 @@ var trackOutboundLink = function(id, url) {
<div class="bg-white mb2 pa3 pa4-l gray">
<h1 class="near-black f3">
<a href="/wechat/articles/2018/12/2018-12-12-gasc/" class="link primary-color dim">Jenkins Configuration-as-Code: 看,我都不用手动配置</a>
</h1>
<div class="lh-copy links">
JCasC 允许我们在启动时或通过 web UI 按需在 Jenkins master 上应用一组 YAML 文件
<a href="/wechat/articles/2018/12/2018-12-12-gasc/" class="f6 mt2 db link primary-color dim">
查看更多 &raquo;
</a>
</div>
</div>
</div>
<div class="relative weight-0" style="max-width: 350px">
<div class="bg-white mb2 pa3 pa4-l gray">
<h1 class="near-black f3">
<a href="/wechat/articles/2019/04/2019-04-15-kubecon-cn/" class="link primary-color dim">Jenkins 中文社区邀您来上海共同参与2019年的国际开源盛宴</a>
</h1>
......@@ -426,33 +453,6 @@ Jenkins 中文社区邀您参与社区共同成长 在开源盛会开展的同
<div class="relative weight-0" style="max-width: 350px">
<div class="bg-white mb2 pa3 pa4-l gray">
<h1 class="near-black f3">
<a href="/wechat/articles/2018/12/2018-12-25-year-in-review/" class="link primary-color dim">回顾 2018: 革新的一年</a>
</h1>
<div class="lh-copy links">
Jenkins 创始人 KK 先生的年终总结
<a href="/wechat/articles/2018/12/2018-12-25-year-in-review/" class="f6 mt2 db link primary-color dim">
查看更多 &raquo;
</a>
</div>
</div>
</div>
</section>
</div>
......
......@@ -184,6 +184,33 @@ var trackOutboundLink = function(id, url) {
<div class="bg-white mb2 pa3 pa4-l gray">
<h1 class="near-black f3">
<a href="/wechat/articles/2018/12/2018-12-25-year-in-review/" class="link primary-color dim">回顾 2018: 革新的一年</a>
</h1>
<div class="lh-copy links">
Jenkins 创始人 KK 先生的年终总结
<a href="/wechat/articles/2018/12/2018-12-25-year-in-review/" class="f6 mt2 db link primary-color dim">
查看更多 &raquo;
</a>
</div>
</div>
</div>
<div class="relative weight-0" style="max-width: 350px">
<div class="bg-white mb2 pa3 pa4-l gray">
<h1 class="near-black f3">
<a href="/wechat/articles/2018/11/2018-11-21-validate-jenkinsfile/" class="link primary-color dim">在 VS Code 中校验 Jenkinsfile</a>
</h1>
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册