`

【zz】Ant + Junit 实现自动化测试

    博客分类:
  • Test
 
阅读更多
在软件开发过程中,我们通常需要对各个功能模块以至类的方法进行详细的测试。这种对最小的软件单元进行验证的工作也叫做单元测试,单元测试通常在编码过程中进行,在以测试驱动开发的项目中,单元测试是一项非常重要的工作,但随着开发过程的深入,我们所积累的单元测试案例就会越来越多,面对成百上千个测试类,单独运行每个案例不仅费时,而且很难在以后的集成测试中利用先前的单元测试案例构建出一个完整的测试报告。
Junit是一个用于java软件测试的开源项目,主要的应用也是作为单元测试,虽然设计短小,但功能却是非常强大。目前有很多在junit上进行扩展的项目帮助我们完成各种测试。比如web性能测试的httpunit,jmeter,用于代码覆盖测试的hansel,用于数据库性能测试的dbunit等等,应用遍布软件测试的各个领域。
    Ant同样是一个非常优秀的java项目构建工具。据ant的创始人James Duncan Davidson说,ant代表:"Another Neat Tool"。同样的,ant在英文中是“蚂蚁“的意思,这又代表着它有建筑本领高超和身躯虽小,但功能却极其强大的意思(可以参看:http://ant.apache.org/faq.html#ant-name),ant项目从2000年开始,一直未停止更新工作,目前的最高版本是1.7.0。
在下面我们还需要用到java的IDE开发工具Eclipse。在最新的3.2版本中,eclipse已经整合了junit4、junit3.8.1和ant1.6.5。但由于只有在ant1.7.0以后版本中才开始支持junit,因此需要我们从http://ant.apache.org下载最新的1.7.0,并重新设置eclipse的Ant Home的位置指向ant1.7.0的lib包。如图:

Eclipse里面已经自带了junit4和junit3.8.1,如果使用的jdk环境是5.0(jdk1.5)可以使用junit4,如果是1.4则使用junit3.8.1。查看和设置项目的jdk环境可以通过project ->properties ->java compiler.如图:

 
   默认情况下,"Enable project specific settings" 选项是未选中的,则项目使用当前操作系统默认的java环境(跟你设置的java build path无关)。
   下面,我们创建一个测试项目,名字为:test,并创建两个源文件夹:src和test..把项目源文件和测试文件分开放在这两个文件夹中。
我们在src编写一个测试类:
 
package com.widetrust;
 
public class CountService {
     private int summary;
     private int count;
     public boolean stat(int visitor){
    count++;
    summary += visitor;
    if(summary>1000 && count>2){
    return true;
    }else{
        return false;
    }
     }
}
 
在test文件夹写个测试该类的类:
 
package com.widetrust.test;
 
import com.widetrust.CountService;
import junit.framework.TestCase;
 
public class TestCountService extends TestCase {
    CountService cs;
    protected void setUp() throws Exception {
        cs = new CountService();
    }
 
    protected void tearDown() throws Exception {
    }
    public void testStat(){      
    assertEquals(true, cs.stat(4000));
    }
    public void testStat2(){
    cs.stat(2000);
    cs.stat(2000);
    assertEquals(true, cs.stat(3000));
    }
}
 
 
当然我们可以利用eclipse的Run As Junit Test(快捷键:Alt+Shift+X T)运行我们刚写好的测试案例,但有个问题是eclipse不能正确的同步我们的开发和测试程序,而且,我们可能还希望测试的过程中为我们提供一份详细的报告文档,以供我们在测试后的改进过程中的讨论。现在我们使用ant的自动编译功能来实现测试的自动化,并让它生成一份详细的测试报告。
  注意的是,ant自带了junit的支持包,但项目需要junit.jar,还需要在项目的lib文件夹中放置junit.jar,(这里我假设工程目录存放项目依赖组件的是lib文件夹)如果我们要单独使用ant编译整个项目,需要在项目构建文件build.xml中定义编译所用到的lib包。当然,为了省事,我们也可以把项目依赖的lib包放到ant的设置项Global Entries 中,如图:

 
这里我们把项目依赖包都设置在build.xml中:
在项目的根目录创建一个build.xml,内容如下:
 
<?xml version="1.0"?>
 
<project name="ant and junit" default="test auot junit and report" basedir=".">
   
    <!-- 定义工程依赖的jar包存放的位置 -->
    <property name="lib.dir" value="lib"/>
    <path id="classpath">
       <fileset dir="${lib.dir}" includes="**/*.jar"/>
    </path>
 
    <property name="output folder" value="classes"/>
    <property name="src folder" value="src"/>
    <property name="test folder" value="test"/>
    <property name="report folder" value="report"/>
 
    <target name="clean">
       <delete dir="report"/>
       <echo>清除测试报告文件 成功!</echo>
    </target>
 
    <target name="compile init">
       <mkdir dir="${output folder}"/>
       <echo>创建编译文件夹 成功!</echo>
    </target>
 
    <target name="report init"depends="clean">
       <mkdir dir="${report folder}"/>
       <echo>创建测试报告文件夹 成功!</echo>
    </target>
 
    <target name="compile"depends="compile init">
       <javac srcdir="${src folder}" destdir="${output folder}" classpathref="classpath"/>
       <echo>项目源文件编译 成功!</echo>
    </target>
 
    <target name="test compile" depends="report init">
       <javac srcdir="${test folder}" destdir="${output folder}" classpathref="classpath"/>
       <echo>项目测试文件编译 成功!</echo>
    </target>
 
    <target name="all compile" depends="compile, test compile">
    </target>
 
    <target name="test auot junit and report" depends="all compile">
       <junit printsummary="on" fork="true" showoutput="true">
           <classpath>
              <fileset dir="${lib.dir}"includes="**/*.jar"/>
              <pathelement path="${output folder}"/>
           </classpath>
           <formatter type="xml"/>
           <batchtest todir="${report folder}">
              <fileset dir="${output folder}">
                  <include name="**/Test*.*"/>
              </fileset>
           </batchtest>
       </junit>
       <junitreport todir="${report folder}">
           <fileset dir="${report folder}">
              <include name="TEST-*.xml"/>
           </fileset>
           <report format="frames" todir="${report folder}"/>
       </junitreport>
    </target>
</project>
 
 
我们在eclipse中利用windows -> show View -> Ant 打开ant工作窗口,点击”Add Buildfiles” 将项目的根目录下的build.xml添加进去,然后在ant工作窗口点运行图标,可以看到控制台上的输出:(当然,用命令行方式运行也可以)

 
整个项目编译成功,并在项目根目录生成一个report文件夹,我们可以从中看到一份详细的测试报告:
 

 
我们可能会希望junit 和ant为我们提供中文的测试报告,很遗憾的是,ant并没有给我们提供这个选项,还好,ant可以让我们通过定义styledir属性,更改报告文件的输出样式的配置文件:我们要做的,就是汉化在ant安装文件夹中的junit-frames.xsl和junit-noframes.xsl,(也可以从http://download.csdn.net/user/lemonfamily 下载到该文件)甚至可以在里面定义一些我们需要的东西。
 
<junitreporttodir="${report folder}">
           <filesetdir="${report folder}">
              <includename="TEST-*.xml"/>
           </fileset>
           <reportformat="frames"todir="${report folder}"styledir="junitreport"/>
       </junitreport>
 
这是更改后的效果:
 

 
     现在我们已经可以做到测试代码和开发代码分开,并利用ant的自动编译功能为我们执行测试计划和生成测试报告。虽然在编写测试案例的时候确实比较麻烦,我们需要详细的模拟实际应用中的环境,并寻找可能出现错误的边界值帮助我们在编写实际代码时尽量减少隐患的发生,往往编写测试案例的时间比我们编写实际代码的时间还长,但这样做是非常值得的,一个软件的开发周期最长的60%都是花在寻找错误和完善的过程中。
分享到:
评论

相关推荐

    Ant+Junit+Svn实现自动单元测试

    总结来说,Ant+JUnit+Svn的结合可以实现从版本控制仓库自动获取最新代码,编译项目,运行单元测试,生成测试报告,并在必要时发送邮件通知的完整自动化流程。这种自动化测试流程对于持续集成和提高开发效率具有重要...

    eclipse下利用ant、junit进行自动化测试例子源码

    通过研究和实践这个例子,开发者不仅可以掌握ANT和JUnit的基本用法,还能了解如何在Eclipse中整合这两个工具,实现高效、自动化的测试流程。这对于提升个人或团队的软件开发质量和效率都具有重要意义。

    ant+junit教程

    Ant是一个构建工具,它允许开发者自动化构建、测试和部署Java项目,而JUnit则是一个单元测试框架,用于编写和运行可重复的测试用例,确保代码质量。这个“ant+junit教程”会深入探讨这两个工具的集成与使用。 首先...

    Ant+Junit+SVN的安装过程

    开发者只需要按照JUnit规定的规则,比如继承特定的测试基类或实现特定接口,就可以创建可自动运行的测试用例。JUnit支持断言、异常测试、参数化测试等多种测试模式,极大地简化了测试工作。 接下来是SVN...

    Ant+Junit4实现自动单元测试

    本篇文章将详细探讨如何利用Ant和JUnit4来实现自动化的单元测试。 首先,我们需要了解Ant的基本概念。Apache Ant是一个Java库和命令行工具,其任务是驱动构建过程。它的配置文件(通常命名为build.xml)定义了一...

    Ant+JUnit测试报告实际例子

    总的来说,这个"Ant+JUnit测试报告实际例子"提供了一个完整的测试工作流程,涵盖了从编写测试用例到自动化执行和生成报告的全部过程。通过学习和实践这个例子,开发者可以更好地理解如何在 Java 项目中实现有效的...

    Junit+ant+cobertura示例

    Ant具有良好的可扩展性,可以与其他工具(如JUnit)集成,实现测试自动化。 【Cobertura】 Cobertura是一款用于Java代码覆盖率工具,它可以度量代码被单元测试覆盖的程度。代码覆盖率是衡量测试质量的重要指标,...

    Eclipse下Ant+Junit构建文件

    在IT行业中,构建工具是开发过程中的重要环节,它们帮助我们自动化编译、测试和部署代码。本话题将深入探讨如何在Eclipse集成开发环境中利用Ant和JUnit进行项目构建与测试,以提升开发效率和代码质量。 首先,...

    selenium+junit+hudson自动化测试初探

    本文旨在探讨如何利用Selenium、JUnit和Hudson构建一个自动化测试框架。Selenium是一款强大的开源Web功能测试工具,支持多种编程语言,如Ruby、Python、Java、Perl和C#。它能直接在浏览器中运行测试,模拟真实用户的...

    ant+junit程序小实例(绝对可以运行)

    `JUnit` 则是Java编程语言中最常用的单元测试框架,它使得开发者能够编写易于执行和维护的自动化测试用例。 `Ant` 的主要功能包括编译源代码、打包应用、执行测试、生成文档等。它的核心概念是构建文件,通常命名为...

    selenium+junit自动化测试框架

    1.seleRrj是工程包,包含简单的自动化测试demo以及jar包,已经加入junit4支持;调试运行通过; 2.selenium-fireFox插件,安装在火狐浏览器里面 用于录制自动化脚本和学习自动化测试; 3.我用的火狐版本是v21.0版本,...

    junit5.rar包含JUnit Platform + JUnit Jupiter + JUnit Vintage依赖jar包

    JUnit 5 = JUnit Platform + JUnit Jupiter + JUnit Vintage,包含依赖包:junit-jupiter-5.5.1.jar,junit-jupiter-engine-5.5.1.jar,junit-jupiter-params-5.5.1.jar,junit-platform-launcher-1.5.1.jar,junit-...

    hibernate+spring +ant+junit

    总结来说,这个项目展示了Java开发中常见的一套技术组合,通过Hibernate和Spring进行数据层和业务层的交互,使用Ant进行构建自动化,利用JUnit保证代码质量,而C标签则提供了用户友好的前端分页体验。这样的组合在...

    Selenium+Eclipse+Junit+TestNG.docx

    Selenium+Eclipse+Junit+TestNG 自动化测试框架搭建指南 本文将详细介绍如何使用 Selenium+Eclipse+Junit+TestNG 搭建自动化测试框架,包括安装 JDK、Eclipse、Selenium IDE、Selenium RC、IEDriverServer、...

    junit + ant 自动化测试

    `JUnit` 和 `Ant` 是两个非常重要的工具,它们在Java开发环境中被广泛用于自动化测试和构建管理。 `JUnit` 是一个流行的Java单元测试框架,它为开发者提供了编写和运行可重复测试的简洁接口。通过`JUnit`,你可以...

    Spring+JUnit4 +Ant测试报告

    总之,Spring+JUnit4+Ant的组合为Java开发提供了强大的单元测试能力。通过合理配置和使用这些工具,开发者可以更高效地进行测试,保证代码质量,降低维护成本。在压缩包文件"junitTest"中,可能包含了示例的测试代码...

    hibernate+spring+junit+ant+mysql

    标题中的“hibernate+spring+junit+ant+mysql”是一个经典的Java开发组合,它涵盖了五个重要的技术领域:Hibernate作为对象关系映射框架,Spring作为全面的轻量级框架,JUnit用于单元测试,Ant作为构建工具,以及...

    Maven2.Ant.Junit合集

    《Maven2.Ant.Junit合集》是一个...Ant提供了基础的构建能力,JUnit确保代码质量,而Maven则将项目管理和自动化提升到新的高度。通过深入学习这些工具,开发者能够更高效地管理Java项目,提高开发效率,保证软件质量。

Global site tag (gtag.js) - Google Analytics