接上文,本文主要介绍Junit+ant+JaCoCo集成使用

1、工具的下载上传

需要的工具有:

apache-ant-1.10.5-bin.tar
apache-tomcat-8.0.50.tar
jacoco-0.8.4-20190222.010339-7.zip

下载jacoco上传到到具体服务器:

https://oss.sonatype.org/service/local/artifact/maven/redirect?r=snapshots&g=org.jacoco&a=jacoco&e=zip&v=LATEST

也可以到官网下载:https://www.eclemma.org/jacoco/

下载tomcat上传到服务器:https://tomcat.apache.org/

下载ant上传到服务器:http://ant.apache.org/bindownload.cgi

上传到具体的服务器,目录如下:

2、解压配置环境变量

tar -xvf apache-tomcat-8.0..tar.gz
tar -xvf apache-tomcat-8.0..tar
unzip jacoco-0.8.-20190222.010339-.zip

2.1、设置用户环境变量:输入命令:vim ~/.bashrc,有的环境是vim ~/.bash_profile,打开文件,输入ant需要的环境变量;如下内容:

ANT_HOME=/home/antjacocolinux/apache-ant-1.10.
PATH=$ANT_HOME/bin:$PATH
export PATH ANT_HOME

2.2 退出并保存:esc => shift + : => wq => 回车,设置环境变量后必须使命令生效!!再输入命令使之生效:source ~/.bash_profile

修改apache-tomcat-8.0.50目录下bin文件夹下的catalina.sh的JAVA_OPTS配置,如图新增:

JAVA_OPTS="$JAVA_OPTS -javaagent:/home/antjacocolinux/jacoco-0.8.4/lib/jacocoagent.jar=includes=*,output=tcpserver,append=true,port=6101,address=*" 

3、准备好ant项目,修改build.xml配置:

创建一个java工程,编写Calculator类

public class Calculator {
public int evaluate(String expression) {
int sum = ;
for (String summand: expression.split("\\+"))
sum += Integer.valueOf(summand);
return sum;
} public int missAdd(int a, int b) {
return a + b;
} public boolean beyondZero(int v) {
if (v > ) {
return true;
} else {
return false;
}
}
}

创建单元测试CalculatorTest 类

import static org.junit.Assert.assertEquals;
import org.junit.Test; public class CalculatorTest {
@Test
public void evaluatesExpression() {
Calculator calculator = new Calculator();
int sum = calculator.evaluate("1+2+3");
assertEquals(, sum);
} @Test
public void testChoose() {
Calculator calculator = new Calculator();
assertEquals(true, calculator.beyondZero());
}
}

修改build.xml文件

<?xml version="1.0" encoding="UTF-8"?>
<project name="junit-example" default="rebuild" xmlns:jacoco="antlib:org.jacoco.ant">
<description>
这是一个简单的Demo,用来演示junit+ant+Jacoco
</description>
<property name="main.build.dir" value="build/main"/>
<property name="main.src.dir" value="src/main/java"/>
<property name="test.build.dir" value="build/test"/>
<property name="test.src.dir" value="src/test/java"/>
<property name="result.dir" location="./target" />
<property name="result.report.dir" location="${result.dir}/site/jacoco" />
<property name="result.exec.file" location="${result.dir}/jacoco.exec" /> <taskdef uri="antlib:org.jacoco.ant" resource="org/jacoco/ant/antlib.xml">
<classpath path="lib/jacocoant.jar" />
</taskdef> <target name="clean">
<delete dir="${result.dir}" />
<delete dir="build" />
</target> <path id="classpath.test">
<pathelement location="lib/junit-4.12.jar"/>
<pathelement location="lib/hamcrest-core-1.3.jar"/>
<pathelement location="${main.build.dir}"/>
</path> <target name="compile">
<mkdir dir="${main.build.dir}"/>
<javac srcdir="${main.src.dir}" destdir="${main.build.dir}" debug="true" includeantruntime="false"/>
</target> <target name="test-compile" depends="compile">
<mkdir dir="${test.build.dir}"/>
<javac srcdir="${test.src.dir}" destdir="${test.build.dir}" includeantruntime="false">
<classpath refid="classpath.test"/>
</javac>
</target> <target name="test" depends="test-compile">
<jacoco:coverage destfile="${result.exec.file}">
<junit printsummary="yes" haltonfailure="yes" fork="true" forkmode="once">
<classpath>
<path refid="classpath.test"/>
<pathelement location="${test.build.dir}"/>
</classpath>
<formatter type="brief" usefile="false" />
<batchtest>
<fileset dir="${test.src.dir}" includes="**/*Test.java" />
</batchtest>
</junit>
</jacoco:coverage>
</target>
<target name="report" depends="test">
<jacoco:report>
<executiondata>
<file file="${result.exec.file}" />
</executiondata>
<structure name="JaCoCo Ant Example">
<classfiles>
<fileset dir="${main.build.dir}" />
</classfiles>
<sourcefiles encoding="UTF-8">
<fileset dir="${main.src.dir}" />
</sourcefiles>
</structure>
<html destdir="${result.report.dir}" />
<csv destfile="${result.report.dir}/report.csv" />
<xml destfile="${result.report.dir}/report.xml" />
</jacoco:report>
</target>
<target name="rebuild" depends="clean,report" />
</project>

将该项目放到apache-tomcat-8.0.50/webapps下,到输入命令:

ant report

在对应的目录下会生成html的报告,目录如下:

点击可以查看具体的报告:

相关代码下载:代码下载

Junit+ant+JaCoCo集成使用的更多相关文章

  1. 将jacoco集成到测试工具平台

    最近在做接口测试,想通过代码覆盖率来判断一下接口用例是否缺失,但是每次通过命令来生成覆盖率报告,感觉太麻烦,所以就想着把jacoco集成到测试工具平台中,只需要点几个按钮,就能查看到覆盖率报告. 测试 ...

  2. 单元测试系列之一:如何使用JUnit、JaCoCo和EclEmma提高单元测试覆盖率

    更多原创测试技术文章同步更新到微信公众号 :三国测,敬请扫码关注个人的微信号,感谢!   原文链接:http://www.cnblogs.com/zishi/p/6726664.html -----如 ...

  3. 学习笔记:首次进行JUnit+Ant构建自动的单元测试(二)

    关键字:JUnit,Ant,单元测试 终于把JUnit+Ant构建单元测试的大概了解了,其实我实践的过程是对了,只是指导博客(看到这里不懂请看我上一篇博客)本身的错误“成功”把我带入“坑”,有时候网友 ...

  4. 学习笔记:首次进行JUnit+Ant构建自动的单元测试(一)

    指导博客:https://blog.csdn.net/Cceking/article/details/51692010 基于软件测试的需求,使用JUnit+Ant构建自动的单元测试. IDE:ecli ...

  5. jenkins+jacoco+ant+apache集成统计web端功能测试覆盖率

    一.覆盖率定义 作为一个测试人员,保证产品的软件质量是其工作首要目标,为了这个目标,测试人员常常会通过很多手段或工具来加以保证,覆盖率就是其中一环比较重要的环节. 我们通常会将测试覆盖率分为两个部分, ...

  6. DevOps之Pipeline集成junit、jacoco、SonarQube(二)

    一.准备工作 1.准备一个持续集成的代码工程 工程下载地址: Github地址为:https://github.com/zbbkeepgoing/springboot-demo 2.springboo ...

  7. SpringBoot Junit Maven JaCoCo

    写一下最近写单体测试的一些笔记. SrpingBoot的测试用例: @RunWith(SpringJUnit4ClassRunner.class) @SpringBootTest(classes = ...

  8. ant+Jacoco 统计tomcat远程部署后项目接口自动化测试或者功能测试代码覆盖率

    1.安装ant 环境,https://ant.apache.org/bindownload.cgi 2.下载jacoco包  https://www.eclemma.org/jacoco/ ,解压后, ...

  9. Jenkins + Jmeter +Ant自动化集成环境搭建(一)

    所需工具 一.jmeter 工具下载 https://jmeter.apache.org/  配置环境JDK等及各种插件可以看小七之前的教程 二.Ant安装(http://ant.apache.org ...

随机推荐

  1. Mysql解压版配置环境等

    背景故事:安装版的mysql和我的本本有仇,最后一步老卡死 1.首先先把下载好的压缩包解压,如下图:

  2. 16.并发容器之CopyOnWriteArrayList

    1. CopyOnWriteArrayList的简介 java学习者都清楚ArrayList并不是线程安全的,在读线程在读取ArrayList的时候如果有写线程在写数据的时候,基于fast-fail机 ...

  3. 1-17-Linux中计划任务与日志的管理

    本节所讲内容: 1-1 Linux中的计划任务 1-1-1 at计划任务的使用 1-1-2 cron 计划任务的使用 1-1 Linux服务器的日志管理 1-1-1 日志的种类和记录的方式 1-1-2 ...

  4. Project facet Java version 1.8 is not supported.

    Eclipse中添加项目到Servers中时提示“Project facet Java version 1.8 is not supported.” 解决方案:方法一:选中项目,右键roperties ...

  5. day36 爬虫+http请求+高性能

    爬虫 参考博客:http://www.cnblogs.com/wupeiqi/articles/5354900.html http://www.cnblogs.com/wupeiqi/articles ...

  6. Factorialize a Number

    计算一个整数的阶乘 如果用字母n来代表一个整数,阶乘代表着所有小于或等于n的整数的乘积. 阶乘通常简写成 n! 例如: 5! = 1 * 2 * 3 * 4 * 5 = 120 当你完成不了挑战的时候 ...

  7. ES的Zen发现机制

    ES的Zen发现机制 Zen发现机制是ElasticSearch默认的发现模块.它提供的是单播发现,但是可被拓展为支持云环境下或者其他形式的发现机制.zen 发现模块集成了其他模块,如在发现期间,节点 ...

  8. windows环境下使用MySQL导入数据乱码报错的解决办法

    Linux及Mac系统下使用source xxx.sql 可直接导入测试数据(注意必须先切换到当前xxx.sql的目录下), 但在Windows环境下导入会出现乱码报错的情况, 主要是因为编码的问题, ...

  9. C++11_ tuple

    版权声明:本文为博主原创文章,未经博主允许不得转载. tuple 是一个可以装载任何变量的容器,C++11的Variadic Templates给tuple的实现带来了极大方便. tuple的实现基于 ...

  10. APUE学习笔记——6.10 时间与时间例程 time_t

           Unix提供的最基本的时间服务室日历时间(纪元时间),也就是计算1970年1月1日0时0分0秒到当前的秒数.该秒数用time_t表示. typedef long time_t; /* 时 ...