ANT task之Junit、JunitReport
2015-01-04 18:05
323 查看
一、ANT任务之Junit:
学习ANT其实主要是学习ANT的task,ANT众多task中有一个Testing Tasks,它下面有两个任务:Junit和JunitReport,主要用来进行单元测试及生成单元测试报告。
官方网址:http://ant.apache.org/manual/index.html
<junit>下面可以包含其它元素,例如:
1、<test>:运行单个TestCase
2、<batchtest>:运行多个TestCase
3、<formatter>:定义测试结果输出格式
还有很多,详细可以参考官方文档。
二、项目实例:
由于ant安装比较得简单,网上一搜一大把且现在ecplise基本都带ant,所以本文并未说明如何搭建ant环境。
另外,在eclipse中可以通过:window->show view 来调出Ant视图
1、目录结构如下:
View Code
说明:
<junit printsummary="true">
<classpath refid="compile.path"/>
<test name="com.glen.he.SimpleCalculationTest"/>
</junit>
<path id="compile.path">
<fileset dir="${lib.path}">
<include name="**/*.jar"/>
</fileset>
<pathelement path="${build.path}"/>
</path
我们在<junit〉任务下,使用了编译后的.class文件的目录,还有编译所需的jar包所在的目录。 因为,JUnit任务实际就是为我们运行Test类,而不仅仅是像我们发布Ant文件那样只是javac编译,只需要编译所需的Jar包。我们还需要像java任务那样运.class文件,所以必须包括编译后的.class文件。
5、然后把build.xml文件拖到Ant视图中,如下图,双击junit执行即可。
![](http://images.cnitblog.com/blog/77835/201501/041742524349087.jpg)
6、执行结果:
三、增强版build.xml
通过上面第二步,基本可以达到使用ant和junit来进行单元测试,但还远远不够,比如需要批量运行案例,生成报告等,下面会介绍这些内容
1、使用formatter属性输出junit信息:
修改build.xml文件,增加第16,49,51,57,58,59行代码
修改build.xml文件,修改53行代码,增加了todir属性,指定xml的输出路径。
执行junit的task后,在项目report目录下生成了一个名为TEST-com.glen.he.SimpleCalculationTest.xml的xml文件。
另外:
<formatter type="xml" usefile="true"/>中type属性值还有plain、brief
这时会输出一个文本文件,提供测试失败时的详细内容以及每个测试的运行统计。
2、批量运行单元测试案例:
修改build.xml文件,把步骤7中的第53行代码替换成下面的58~62行代码;
3、使用<JunitReport>生成测试报告:
在上面我们已经知道,通过formatter(type=“xml”)输出junit信息时会在指定目录下生成一个Test-类路径名.xml的xml文件,但是这个xml文件看起来很不方便。Ant提供了<junitreport>任务使用XSLT将xml文件转换为HTML报告,该任务首先将生成的XML文件整合成单一的XML文件,然后再对他进行转换,这个整合的文件默认情况下被命名为:TESTS-TestSuites.xml.
修改上面的build.xml文件,增加65~71行,如下:
执行后会在指定目录下生成报告文档,打开index.html可以很方便的看到执行的结果。
1、如下图所示(我又补充了3个案例,并且故意让两个案例失败),显示执行的统计结果:
![](http://images.cnitblog.com/blog/77835/201501/051945116564002.jpg)
2、点击classes下面的ComplexCalculationTest,可以看到具体某个类里面的单元测试案例执行统计情况以及失败案例的错误信息提示。
![](http://images.cnitblog.com/blog/77835/201501/051945302815545.jpg)
OVER!
参考:
/article/1672328.html
http://blog.csdn.net/tochal/article/details/12560151
学习ANT其实主要是学习ANT的task,ANT众多task中有一个Testing Tasks,它下面有两个任务:Junit和JunitReport,主要用来进行单元测试及生成单元测试报告。
Testing Tasks |
---|
Task Name | Description |
---|---|
Junit | Runs tests from the Junit testing framework. This task has been tested with JUnit 3.0 up to JUnit 3.7; it won't work with versions prior to JUnit 3.0. |
JunitReport | Merges the individual XML files generated by the Junit task and applies a stylesheet on the resulting merged document to provide a browsable report of the testcases results. |
<junit>下面可以包含其它元素,例如:
1、<test>:运行单个TestCase
2、<batchtest>:运行多个TestCase
3、<formatter>:定义测试结果输出格式
还有很多,详细可以参考官方文档。
二、项目实例:
由于ant安装比较得简单,网上一搜一大把且现在ecplise基本都带ant,所以本文并未说明如何搭建ant环境。
另外,在eclipse中可以通过:window->show view 来调出Ant视图
1、目录结构如下:
<?xml version="1.0" encoding="UTF-8"?> <project name="AntDemo" default="junit" basedir="."> <!-- =================================================================== --> <!-- 变量设置 --> <!-- =================================================================== --> <!-- 源代码src路径 --> <property name="src.path" value="src/java"/> <!-- 编译文件class路径 --> <property name="build.path" value="build"/> <!-- 单元测试代码路径 --> <property name="test.path" value="src/test"/> <!-- lib包路径 --> <property name="lib.path" value="lib"/> <!-- =================================================================== --> <!-- 设置classpath --> <!-- =================================================================== --> <path id="compile.path"> <fileset dir="${lib.path}"> <include name="**/*.jar"/> </fileset> <pathelement path="${build.path}"/> </path> <!-- =================================================================== --> <!-- 清除历史编译class --> <!-- =================================================================== --> <target name="clean" description="clean"> <delete dir="${build.path}"/> </target> <!-- =================================================================== --> <!-- 编译测试文件,初始化目录 --> <!-- =================================================================== --> <target name="compile" description="compile"> <mkdir dir="${build.path}"/> <javac srcdir="${src.path}" destdir="${build.path}" classpathref="compile.path"/> <javac srcdir="${test.path}" destdir="${build.path}" classpathref="compile.path"/> </target> <!-- =================================================================== --> <!-- 执行测试案例 --> <!-- =================================================================== --> <target name="junit" depends="clean,compile"> <junit printsummary="true"> <classpath refid="compile.path"/> <test name="com.glen.he.SimpleCalculationTest"/> </junit> </target> </project>
View Code
说明:
<junit printsummary="true">
<classpath refid="compile.path"/>
<test name="com.glen.he.SimpleCalculationTest"/>
</junit>
<path id="compile.path">
<fileset dir="${lib.path}">
<include name="**/*.jar"/>
</fileset>
<pathelement path="${build.path}"/>
</path
我们在<junit〉任务下,使用了编译后的.class文件的目录,还有编译所需的jar包所在的目录。 因为,JUnit任务实际就是为我们运行Test类,而不仅仅是像我们发布Ant文件那样只是javac编译,只需要编译所需的Jar包。我们还需要像java任务那样运.class文件,所以必须包括编译后的.class文件。
5、然后把build.xml文件拖到Ant视图中,如下图,双击junit执行即可。
![](http://images.cnitblog.com/blog/77835/201501/041742524349087.jpg)
6、执行结果:
1 Buildfile: D:\AntTest\build.xml 2 clean: 3 [delete] Deleting directory D:\AntTest\build 4 compile: 5 [mkdir] Created dir: D:\AntTest\build 6 [javac] Compiling 1 source file to D:\AntTest\build 7 8 [javac] Compiling 1 source file to D:\AntTest\build 9 junit: 10 [junit] Running com.glen.he.SimpleCalculationTest 11 [junit] Tests run: 1, Failures: 0, Errors: 0, Time elapsed: 0.016 sec 12 BUILD SUCCESSFUL 13 Total time: 1 second
三、增强版build.xml
通过上面第二步,基本可以达到使用ant和junit来进行单元测试,但还远远不够,比如需要批量运行案例,生成报告等,下面会介绍这些内容
1、使用formatter属性输出junit信息:
修改build.xml文件,增加第16,49,51,57,58,59行代码
修改build.xml文件,修改53行代码,增加了todir属性,指定xml的输出路径。
<?xml version="1.0" encoding="UTF-8"?> <project name="AntDemo" default="junit" basedir="."> <!-- =================================================================== --> <!-- 变量设置 --> <!-- =================================================================== --> <!-- 源代码src路径 --> <property name="src.path" value="src/java"/> <!-- 编译文件class路径 --> <property name="build.path" value="build"/> <!-- 单元测试代码路径 --> <property name="test.path" value="src/test"/> <!-- lib包路径 --> <property name="lib.path" value="lib"/> <!-- 生成报告junit4.xml路径 --> <property name="report.path" value="report"/> <!-- =================================================================== --> <!-- 设置classpath --> <!-- =================================================================== --> <path id="compile.path"> <fileset dir="${lib.path}"> <include name="**/*.jar"/> </fileset> <pathelement path="${build.path}"/> </path> <!-- =================================================================== --> <!-- 清除历史编译class --> <!-- =================================================================== --> <target name="clean" description="clean"> <delete dir="${build.path}"/> </target> <!-- =================================================================== --> <!-- 编译测试文件,初始化目录 --> <!-- =================================================================== --> <target name="compile" description="compile"> <mkdir dir="${build.path}"/> <javac srcdir="${src.path}" destdir="${build.path}" classpathref="compile.path"/> <javac srcdir="${test.path}" destdir="${build.path}" classpathref="compile.path"/> </target> <!-- =================================================================== --> <!-- 执行测试案例 --> <!-- =================================================================== --> <target name="junit" depends="clean,compile"> <mkdir dir="${report.path}"/> <junit printsummary="true" fork="true"> <formatter type="xml" usefile="true"/> <classpath refid="compile.path"/> <test name="com.glen.he.SimpleCalculationTest" todir="${report.path}" fork="true"/> </junit> </target> <target name="delete"> <delete dir="${report.path}"/> </target> </project>
执行junit的task后,在项目report目录下生成了一个名为TEST-com.glen.he.SimpleCalculationTest.xml的xml文件。
另外:
<formatter type="xml" usefile="true"/>中type属性值还有plain、brief
这时会输出一个文本文件,提供测试失败时的详细内容以及每个测试的运行统计。
2、批量运行单元测试案例:
修改build.xml文件,把步骤7中的第53行代码替换成下面的58~62行代码;
<?xml version="1.0" encoding="UTF-8"?> <project name="AntDemo" default="junit" basedir="."> <!-- =================================================================== --> <!-- 变量设置 --> <!-- =================================================================== --> <!-- 源代码src路径 --> <property name="src.path" value="src/java"/> <!-- 编译文件class路径 --> <property name="build.path" value="build"/> <!-- 单元测试代码路径 --> <property name="test.path" value="src/test"/> <!-- lib包路径 --> <property name="lib.path" value="lib"/> <!-- 生成报告junit4.xml路径 --> <property name="report.path" value="report"/> <!-- =================================================================== --> <!-- 设置classpath --> <!-- =================================================================== --> <path id="compile.path"> <fileset dir="${lib.path}"> <include name="**/*.jar"/> </fileset> <pathelement path="${build.path}"/> </path> <target name="init"> <mkdir dir="${build.path}"/> <mkdir dir="${report.path}"/> </target> <!-- =================================================================== --> <!-- 清除历史编译class --> <!-- =================================================================== --> <target name="clean" description="clean"> <delete dir="${build.path}"/> </target> <!-- =================================================================== --> <!-- 编译测试文件,初始化目录 --> <!-- =================================================================== --> <target name="compile" depends="init" description="compile"> <javac srcdir="${src.path}" destdir="${build.path}" classpathref="compile.path"/> <javac srcdir="${test.path}" destdir="${build.path}" classpathref="compile.path"/> </target> <!-- =================================================================== --> <!-- 执行测试案例 --> <!-- =================================================================== --> <target name="junit" depends="compile"> <junit printsummary="true" fork="true"> <formatter type="xml" usefile="true"/> <classpath refid="compile.path"/> <batchtest fork="on" todir="${report.path}" haltonfailure="no"> <fileset dir="${build.path}"> <include name="**/*Test.class"/> </fileset> </batchtest> </junit> </target> <!-- 清除Junit生成的报表文档 --> <target name="delete"> <delete dir="${report.path}"/> </target> </project>
3、使用<JunitReport>生成测试报告:
在上面我们已经知道,通过formatter(type=“xml”)输出junit信息时会在指定目录下生成一个Test-类路径名.xml的xml文件,但是这个xml文件看起来很不方便。Ant提供了<junitreport>任务使用XSLT将xml文件转换为HTML报告,该任务首先将生成的XML文件整合成单一的XML文件,然后再对他进行转换,这个整合的文件默认情况下被命名为:TESTS-TestSuites.xml.
修改上面的build.xml文件,增加65~71行,如下:
<?xml version="1.0" encoding="UTF-8"?> <project name="AntDemo" default="junit" basedir="."> <!-- =================================================================== --> <!-- 变量设置 --> <!-- =================================================================== --> <!-- 源代码src路径 --> <property name="src.path" value="src/java"/> <!-- 编译文件class路径 --> <property name="build.path" value="build"/> <!-- 单元测试代码路径 --> <property name="test.path" value="src/test"/> <!-- lib包路径 --> <property name="lib.path" value="lib"/> <!-- 生成报告junit4.xml路径 --> <property name="report.path" value="report"/> <!-- =================================================================== --> <!-- 设置classpath --> <!-- =================================================================== --> <path id="compile.path"> <fileset dir="${lib.path}"> <include name="**/*.jar"/> </fileset> <pathelement path="${build.path}"/> </path> <target name="init"> <mkdir dir="${build.path}"/> <mkdir dir="${report.path}"/> </target> <!-- =================================================================== --> <!-- 清除历史编译class --> <!-- =================================================================== --> <target name="clean" description="clean"> <delete dir="${build.path}"/> </target> <!-- =================================================================== --> <!-- 编译测试文件,初始化目录 --> <!-- =================================================================== --> <target name="compile" depends="init" description="compile"> <javac srcdir="${src.path}" destdir="${build.path}" classpathref="compile.path"/> <javac srcdir="${test.path}" destdir="${build.path}" classpathref="compile.path"/> </target> <!-- =================================================================== --> <!-- 执行测试案例 --> <!-- =================================================================== --> <target name="junit" depends="compile"> <junit printsummary="true" fork="true"> <formatter type="xml" usefile="true"/> <classpath refid="compile.path"/> <batchtest fork="on" todir="${report.path}" haltonfailure="no"> <fileset dir="${build.path}"> <include name="**/*Test.class"/> </fileset> </batchtest> </junit> <!-- 产生单元测试报表文档 --> <junitreport todir="${report.path}"> <fileset dir="${report.path}"> <include name="TEST-*.xml" /> </fileset> <report format="frames" todir="${report.path}" /> </junitreport> </target> <!-- 清除Junit生成的报表文档 --> <target name="delete"> <delete dir="${report.path}"/> </target> </project>
执行后会在指定目录下生成报告文档,打开index.html可以很方便的看到执行的结果。
1、如下图所示(我又补充了3个案例,并且故意让两个案例失败),显示执行的统计结果:
![](http://images.cnitblog.com/blog/77835/201501/051945116564002.jpg)
2、点击classes下面的ComplexCalculationTest,可以看到具体某个类里面的单元测试案例执行统计情况以及失败案例的错误信息提示。
![](http://images.cnitblog.com/blog/77835/201501/051945302815545.jpg)
OVER!
参考:
/article/1672328.html
http://blog.csdn.net/tochal/article/details/12560151
相关文章推荐
- ANT task之Junit、JunitReport
- org.apache.tools.ant.taskdefs.optional.junit.JUnitTask was not found解决方法
- jUnit+ant
- ant junit 单个测试
- Ant高级-task
- 利用Ant 和 JUnit进行增量开发
- ant脚本执行junit测试用例
- 利用 Ant 和 JUnit 进行增量开发
- 搭建持续集成单元测试平台(Jenkins+Ant+Java+Junit+SVN)
- 附工具 LOG4j和Ant和JUnit (一)
- JUnit和Ant整合案例
- Hudson+Ant+SVN的Junit实例
- 3招解决ant构建时任务找不到(taskdef cann't be found)的问题
- Ant运行Junit
- ant 使用命名空间自定义task
- Ant+junit的测试自动化
- JAVA使用到的一些环境变量,Tomcat,Junit,Ant
- Vi, Java, Ant, Junit自学报告
- Could not create task or type of type: junit
- Maven-Ant-Task 使用手记