ant 学习(3)--结合junit形成自动化测试小框架
2018-02-28 17:41
671 查看
ant 结合junit 进行软件自动测试
1> 用ant 结合junit 启动基本编译和测试的自动过程如下:
★ 执行 JUnit 测试
★ 捕获测试结果,将结果记录到 XML 文件或其它格式的文件
★ 将结果转化为基于 XSL 格式的测试报告
★ 将这个报告转化为 HTML 格式
★ 用电子邮件发送报告 -----这个好像没有实现哦,后面再学习补充
一旦捕获结果,就可以使用 XML 格式化器将每个测试套件运行的故障和错误数,连
同软件包和类名还有测试套件的执行时间一起引入。对于每个测试套件,都有以下信息被
捕获:
☆ 测试案例的名称
☆ 执行的持续时间
☆ 故障或错误的类型(如果适用)
☆ 任何故障或错误的详细信息
2> 本次实例的目录结构:
C:\car 主目录
\src 源程序目录
\classes 编译后的class 文件目录
\etc 其他
\xsl XSL 文件目录
首先在 C盘创建car 目录、src 子目录和etc 子目录,并从%ANT_HOME%\etc 下拷贝junit-noframes.xsl 文件至C:\car\etc\xsl 子目录下。
3> 从http://download.sourceforge.net/junit/junit3.8.zip 下载,解压至C盘,将其目录下的junit.jar 文件拷贝至%ANT_HOME%\lib 目录下。
(说明:这里不一定要是3.8的版本,我想应该高于这个版本的junit的jar包就行)
4> 在src 子目录下新建Car.java 以及testCar.java 文件。
5> 在C:/car目录下创建build.xml 和build.properties 文件。
6》运行ant junit
![](http://img540.ph.126.net/5h_0mWZYIy9x0XL1gdeiuQ==/2689493402471550354.jpg)
![](http://img124.ph.126.net/3rReFTCd39gMsLuqfEpV3A==/3047811047824779236.jpg)
打开junit-noframes.html 测试报告 (显然报告显示期望结果是4,而得到的结果是3,所以测试失败。可以修改Car.java 的结果,改3为4,则可以测试成功)
![](http://img465.ph.126.net/GPuVTAxShOAAdrmbFaB-hA==/1554586296374170614.jpg)
这里生成junit-noframes.html 是因为我们在junitreport中这么设置的 <report format="noframes" styledir="${xsl.dir}" todir="${report.dir}"/>
即无框架显示
如果我们改为<report format="frames" styledir="${xsl.dir}" todir="${report.dir}"/> 让其有框架显示,则要求先从%ANT_HOME%\etc 下拷贝junit-frames.xsl 文件至C:\car\etc\xsl 子目录下。即换一个有框架的模板
然后运行ant junit,其测试报告就变为了
![](http://img96.ph.126.net/LK3pOGdT8rc4pvL1173C-A==/724516590055037787.jpg)
----------------------------
进一步学习,解释以上的内容
在build.xml
中运行了junit,junitreport。
这个两个都是ant的task,在ant官方网站上有解释但不是很明白,以下是在网络中查到的解释,我估计如果利用junitreport
具有以上知识就够用了吧:),其实以下算是对上面junit ,junitreport的解释吧
http://www.blogjava.net/joaquin25/articles/194801.html
一、Junit任务基本概念:
junit是ant的基本任务之一。这个任务运行一个或多个JUNIT测试,并收集以一种或多种格式显示结果。下面是几个junit任务的属性
1、haltonfailure,printsummary分别表示如果测试失败是否中止,是否打印基本信息。
2、fommatter--收集结果数据,一个或多个formatter可以直接在junit,test,或者batchtest下面嵌套使用。有以下三种formatter:
brief:以文本格式提供测试失败的详细内容。
plain:以文本格式提供测试失败的详细内容以及每个测试的运行统计
xml:以xml格式提供扩展的详细内容,包括正在测试时ant的特性,系统输出,以及每个测试用例的系统错误。
<formatter type="xml"/>将会在data目录下为所有的测试用例都创建一个xml文件。
3、test
运行单独的测试用例
<test name=.../>
4、batchtest,同时运行多个测试用例
<formatter type="xml"/>
<batchtest todir="">
<fileset dir="" include=""/>
</batchtest>
测试的输出结果将放到todir。而dir中所有的测试用例都将运行。
xml formatter的默认命名规范为Test-*.xml.
5、syspropertyset,运行junit test的时候,可以指定syspropertyset,这样在Test*.java文件中可以通过System.getProperty();来获取在构建文件中定义的property的值。例子:
<propertyset id="propertyset1">
<propertyref name=$#@##/>
<propertyref prefix="#%##$"/>
</propertyset>
<junit>
...
<syspropertyset refid="propertyset1"/>
</junit>
6、sysproperty,也可以在junit中定义sysproperty,所定义的property的用法和上面的syspropertyset中的property的用法是一样的。
<sysproperty name="" value=""/>
7、fork="true",让junit运行在独立的jvm中。
二、junitreport任务
可以采用junitreport任务生成html的报告。junitreport任务首先将生成的xml文件整合成一个xml文件,一般命名为TESTS-TestSuites.xml.然后再对xml文件进行转换。其格式如下:
<junitreport>
<fileset dir="${test.data.dir}" includes="Test-*.xml"/>
<report format="frames" todir=""/>
</junitreport>
在上面这个例子里,junitreport任务将整合test.data.dir下面的Test-*.xml文件,并且生成html文件框架.
report表示生成有框架或无框架的javadoc。
三、如何只运行单个测试。
对test和batchtest使用if/unless来实现选择性的运行单个测试或者运行整个测试。
<junit>
<test name=${testcase} if="testcase"/>
<batchset todir="${dest}" unless="testcase">
<fileset .../>
</batchset>
</junit>
if表示只要testcase
这个property存在则会执行test,unless表示将会执行batchset,除非testcase这个property存在。因此如果想要运行单个测试,只需要在命令行中-Dtestcase=...即可。否则将会运行所有的testcases。
1> 用ant 结合junit 启动基本编译和测试的自动过程如下:
★ 执行 JUnit 测试
★ 捕获测试结果,将结果记录到 XML 文件或其它格式的文件
★ 将结果转化为基于 XSL 格式的测试报告
★ 将这个报告转化为 HTML 格式
★ 用电子邮件发送报告 -----这个好像没有实现哦,后面再学习补充
一旦捕获结果,就可以使用 XML 格式化器将每个测试套件运行的故障和错误数,连
同软件包和类名还有测试套件的执行时间一起引入。对于每个测试套件,都有以下信息被
捕获:
☆ 测试案例的名称
☆ 执行的持续时间
☆ 故障或错误的类型(如果适用)
☆ 任何故障或错误的详细信息
2> 本次实例的目录结构:
C:\car 主目录
\src 源程序目录
\classes 编译后的class 文件目录
\etc 其他
\xsl XSL 文件目录
首先在 C盘创建car 目录、src 子目录和etc 子目录,并从%ANT_HOME%\etc 下拷贝junit-noframes.xsl 文件至C:\car\etc\xsl 子目录下。
3> 从http://download.sourceforge.net/junit/junit3.8.zip 下载,解压至C盘,将其目录下的junit.jar 文件拷贝至%ANT_HOME%\lib 目录下。
(说明:这里不一定要是3.8的版本,我想应该高于这个版本的junit的jar包就行)
4> 在src 子目录下新建Car.java 以及testCar.java 文件。
Car.java |
public class Car { public int getWheels() { return 3; } } |
testCar.java |
import junit.framework.*; public class testCar extends TestCase { protected int expectedWheels; protected Car myCar; public testCar(String name) { super(name); } protected void setUp() { expectedWheels = 3; myCar = new Car(); } public static Test suite() { return new TestSuite(testCar.class); } public void testGetWheels() { assertEquals(expectedWheels, myCar.getWheels()); } } |
build.xml |
<?xml version="1.0"?> <project default="build" basedir="."> <property file="build.properties" description="Transfer property from .properties file"/> <target name="build" description="Build the work directory"> <mkdir dir="${build.dir}" /> <mkdir dir="${report.dir}" /> <javac srcdir="${src.dir}" destdir="${build.dir}"> <include name="**/*.java" /> </javac> </target> <target name="junit" depends="build" description="Execute Unit Tests"> <tstamp/> <junit printsummary="yes"> <classpath> <pathelement location="${build.dir}"/> </classpath> <formatter type="xml" /> <batchtest todir="${report.dir}"> <fileset dir="${src.dir}"> <include name="**/testCar.java" /> </fileset> </batchtest> </junit> <junitreport todir="${report.dir}"> <fileset dir="${report.dir}"> <include name="TEST-*.xml"/> </fileset> <report format="noframes" styledir="${xsl.dir}" todir="${report.dir}"/> </junitreport> </target> <target name="clean" description="Delete the work directory"> <delete includeEmptyDirs="true"> <fileset dir="${build.dir}"/> <fileset dir="${report.dir}"/> </delete> </target> </project> |
build.properties |
src.dir=src build.dir=classes xsl.dir=etc/xsl report.dir=report |
![](http://img540.ph.126.net/5h_0mWZYIy9x0XL1gdeiuQ==/2689493402471550354.jpg)
![](http://img124.ph.126.net/3rReFTCd39gMsLuqfEpV3A==/3047811047824779236.jpg)
打开junit-noframes.html 测试报告 (显然报告显示期望结果是4,而得到的结果是3,所以测试失败。可以修改Car.java 的结果,改3为4,则可以测试成功)
![](http://img465.ph.126.net/GPuVTAxShOAAdrmbFaB-hA==/1554586296374170614.jpg)
这里生成junit-noframes.html 是因为我们在junitreport中这么设置的 <report format="noframes" styledir="${xsl.dir}" todir="${report.dir}"/>
即无框架显示
如果我们改为<report format="frames" styledir="${xsl.dir}" todir="${report.dir}"/> 让其有框架显示,则要求先从%ANT_HOME%\etc 下拷贝junit-frames.xsl 文件至C:\car\etc\xsl 子目录下。即换一个有框架的模板
然后运行ant junit,其测试报告就变为了
![](http://img96.ph.126.net/LK3pOGdT8rc4pvL1173C-A==/724516590055037787.jpg)
----------------------------
进一步学习,解释以上的内容
在build.xml
中运行了junit,junitreport。
这个两个都是ant的task,在ant官方网站上有解释但不是很明白,以下是在网络中查到的解释,我估计如果利用junitreport
具有以上知识就够用了吧:),其实以下算是对上面junit ,junitreport的解释吧
http://www.blogjava.net/joaquin25/articles/194801.html
一、Junit任务基本概念:
junit是ant的基本任务之一。这个任务运行一个或多个JUNIT测试,并收集以一种或多种格式显示结果。下面是几个junit任务的属性
1、haltonfailure,printsummary分别表示如果测试失败是否中止,是否打印基本信息。
2、fommatter--收集结果数据,一个或多个formatter可以直接在junit,test,或者batchtest下面嵌套使用。有以下三种formatter:
brief:以文本格式提供测试失败的详细内容。
plain:以文本格式提供测试失败的详细内容以及每个测试的运行统计
xml:以xml格式提供扩展的详细内容,包括正在测试时ant的特性,系统输出,以及每个测试用例的系统错误。
<formatter type="xml"/>将会在data目录下为所有的测试用例都创建一个xml文件。
3、test
运行单独的测试用例
<test name=.../>
4、batchtest,同时运行多个测试用例
<formatter type="xml"/>
<batchtest todir="">
<fileset dir="" include=""/>
</batchtest>
测试的输出结果将放到todir。而dir中所有的测试用例都将运行。
xml formatter的默认命名规范为Test-*.xml.
5、syspropertyset,运行junit test的时候,可以指定syspropertyset,这样在Test*.java文件中可以通过System.getProperty();来获取在构建文件中定义的property的值。例子:
<propertyset id="propertyset1">
<propertyref name=$#@##/>
<propertyref prefix="#%##$"/>
</propertyset>
<junit>
...
<syspropertyset refid="propertyset1"/>
</junit>
6、sysproperty,也可以在junit中定义sysproperty,所定义的property的用法和上面的syspropertyset中的property的用法是一样的。
<sysproperty name="" value=""/>
7、fork="true",让junit运行在独立的jvm中。
二、junitreport任务
可以采用junitreport任务生成html的报告。junitreport任务首先将生成的xml文件整合成一个xml文件,一般命名为TESTS-TestSuites.xml.然后再对xml文件进行转换。其格式如下:
<junitreport>
<fileset dir="${test.data.dir}" includes="Test-*.xml"/>
<report format="frames" todir=""/>
</junitreport>
在上面这个例子里,junitreport任务将整合test.data.dir下面的Test-*.xml文件,并且生成html文件框架.
report表示生成有框架或无框架的javadoc。
三、如何只运行单个测试。
对test和batchtest使用if/unless来实现选择性的运行单个测试或者运行整个测试。
<junit>
<test name=${testcase} if="testcase"/>
<batchset todir="${dest}" unless="testcase">
<fileset .../>
</batchset>
</junit>
if表示只要testcase
这个property存在则会执行test,unless表示将会执行batchset,除非testcase这个property存在。因此如果想要运行单个测试,只需要在命令行中-Dtestcase=...即可。否则将会运行所有的testcases。
相关文章推荐
- http://sourceforge.net/projects/easymock/ ant结合junit进行软件自动测试
- 自动化测试框架学习之一 --- 为什么要进行自动化测试?
- 自动化测试框架: 与FinalBuilder结合
- spring4学习记录05-spring mvc实战之框架构建测试jpa借助spring-data实现自动化jpa
- ant结合junit进行软件自动测试
- eclipse下利ant、junit进行自动化测试例子(源码)
- ant结合junit进行软件自动测试(转)
- STAF&nbsp;自动化测试框架学习积累
- 手机常用自动化测试框架学习
- 实践作业3:白盒测试----学习Junit框架DAY10.
- Selenium入门之结合Junit进行自动化测试
- Android自动化测试中Espresso框架学习笔记(1)
- Ant+junit的测试自动化
- selenium进阶之基础--web自动测试框架(ant+junit+selenium)
- Android自动化测试框架Robotium学习笔记
- Android自动化测试框架Robotium学习笔记
- 百度Cafe原理--Android自动化测试框架学习
- jenkins+ant+jmeter接口自动化的持续集成测试框架
- android开发学习(二)——测试概念,junit测试框架, logcat
- Ant build.xml 模版 (JUnit)自动化 增量测试