ant 学习(3)--结合junit形成自动化测试小框架

简介:

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 文件。


 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());
}
}


5> 在C:/car目录下创建build.xml 和build.properties 文件。


 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


   6》运行ant junit

ant 学习(3) - 流口水的小猪 - 轨迹

 

ant 学习(3) - 流口水的小猪 - 轨迹

打开junit-noframes.html 测试报告  (显然报告显示期望结果是4,而得到的结果是3,所以测试失败。可以修改Car.java 的结果,改3为4,则可以测试成功)

ant 学习(3) - 流口水的小猪 - 轨迹

 

这里生成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,其测试报告就变为了

 

ant 学习(3) - 流口水的小猪 - 轨迹

 
 ----------------------------

进一步学习,解释以上的内容

在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。



本文转自 326647452 51CTO博客,原文链接:http://blog.51cto.com/svsky/2074009,如需转载请自行联系原作者

相关文章
|
4天前
|
测试技术 Android开发 UED
探索软件测试中的自动化框架选择
【10月更文挑战第29天】 在软件开发的复杂过程中,测试环节扮演着至关重要的角色。本文将深入探讨自动化测试框架的选择,分析不同框架的特点和适用场景,旨在为软件开发团队提供决策支持。通过对比主流自动化测试工具的优势与局限,我们将揭示如何根据项目需求和团队技能来选择最合适的自动化测试解决方案。此外,文章还将讨论自动化测试实施过程中的关键考虑因素,包括成本效益分析、维护难度和扩展性等,确保读者能够全面理解自动化测试框架选择的重要性。
16 1
|
7天前
|
前端开发 JavaScript 安全
学习如何为 React 组件编写测试:
学习如何为 React 组件编写测试:
22 2
|
8天前
|
编解码 安全 Linux
网络空间安全之一个WH的超前沿全栈技术深入学习之路(10-2):保姆级别教会你如何搭建白帽黑客渗透测试系统环境Kali——Liinux-Debian:就怕你学成黑客啦!)作者——LJS
保姆级别教会你如何搭建白帽黑客渗透测试系统环境Kali以及常见的报错及对应解决方案、常用Kali功能简便化以及详解如何具体实现
|
10天前
|
监控 安全 jenkins
探索软件测试的奥秘:自动化测试框架的搭建与实践
【10月更文挑战第24天】在软件开发的海洋里,测试是确保航行安全的灯塔。本文将带领读者揭开软件测试的神秘面纱,深入探讨如何从零开始搭建一个自动化测试框架,并配以代码示例。我们将一起航行在自动化测试的浪潮之上,体验从理论到实践的转变,最终达到提高测试效率和质量的彼岸。
|
13天前
|
Web App开发 敏捷开发 存储
自动化测试框架的设计与实现
【10月更文挑战第20天】在软件开发的快节奏时代,自动化测试成为确保产品质量和提升开发效率的关键工具。本文将介绍如何设计并实现一个高效的自动化测试框架,涵盖从需求分析到框架搭建、脚本编写直至维护优化的全过程。通过实例演示,我们将探索如何利用该框架简化测试流程,提高测试覆盖率和准确性。无论你是测试新手还是资深开发者,这篇文章都将为你提供宝贵的洞见和实用的技巧。
|
13天前
|
Java 程序员 测试技术
Java|让 JUnit4 测试类自动注入 logger 和被测 Service
本文介绍如何通过自定义 IDEA 的 JUnit4 Test Class 模板,实现生成测试类时自动注入 logger 和被测 Service。
20 5
|
2天前
|
机器学习/深度学习 自然语言处理 物联网
探索自动化测试框架的演变与未来趋势
随着软件开发行业的蓬勃发展,软件测试作为保障软件质量的重要环节,其方法和工具也在不断进化。本文将深入探讨自动化测试框架从诞生至今的发展历程,分析当前主流框架的特点和应用场景,并预测未来的发展趋势,为软件开发团队选择合适的自动化测试解决方案提供参考。
|
5天前
|
测试技术 持续交付
探索软件测试中的自动化框架:优势与挑战
【10月更文挑战第28天】 随着软件开发的快速进步,自动化测试已成为确保软件质量的关键步骤。本文将探讨自动化测试框架的优势和面临的挑战,以及如何有效地克服这些挑战。
14 0
|
8天前
|
人工智能 安全 Linux
网络空间安全之一个WH的超前沿全栈技术深入学习之路(4-2):渗透测试行业术语扫盲完结:就怕你学成黑客啦!)作者——LJS
网络空间安全之一个WH的超前沿全栈技术深入学习之路(4-2):渗透测试行业术语扫盲完结:就怕你学成黑客啦!)作者——LJS
|
8天前
|
安全 大数据 Linux
网络空间安全之一个WH的超前沿全栈技术深入学习之路(3-2):渗透测试行业术语扫盲)作者——LJS
网络空间安全之一个WH的超前沿全栈技术深入学习之路(3-2):渗透测试行业术语扫盲)作者——LJS