`
shenmin1984
  • 浏览: 59981 次
  • 性别: Icon_minigender_2
  • 来自: 安徽
社区版块
存档分类
最新评论

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

阅读更多

 

一、概念

       Ant 是一种基于JavaXMLbuild 工具,它可以让你轻松的编译和测试程序。Ant 使用一个XML 文件进行配置,这个文件也就是构建文件(buildfile) ,默认情况下被命名为build.xmlAnt 的编译文件描述了你想应用在 项目中的每个任务。任务可能是编译Java 源码,生成Java 文档,查询数据库或者执行测试。编译文件可以有许多目标(target) ,或者叫进入点 (entry points) ,所以你可以执行某个单独的任务或者把他们串起来。

    Junit 本质上是一套框架,即开发者制定了一套条条框框,遵循这此条条框框要求编写测试代码,如继承某个类,实现某个接口,就可以用Junit 进行自动测试了。

二、安装

下载apache-ant-1.7.0-bin.zipjavamail-1_3_2-upd.zip 以及SVN1.4.3

1 zip 分发包解压素到电脑上的某个目录(例如D:\Ant )。

2 在环境变量中增加一个ANT_HOME 变量,变量值就是Ant 的解压目录。例如:

变量名:ANT_HOME

变量值:D:\Ant\apache-ant-1.7.0

3 编辑你的系统的PATH 环境变量,加入ANT_HOME\bin 目录;

变量名:PATH

变量值:%ANT_HOME%\bin;.......

4 指定JDK 的安装目录

变量名:JAVA_HOME

变量值:C:\Program Files\Java\jdk1.6.0

变量名:PATH

变量值:%JAVA_HOME%\bin;.......

5 为了可以执行AntJUnit task ,必须把src.jar  junit.jar 拷贝到 ant\lib 文件夹中

6 安装SVN

三 配置

建立项目,其目录结果如下:

项目

--build  存放编译后的文件

--dist   存放测试结果的包

--lib    存放项目运行时所需要的包

--src    存放源文件

--build.properties   Ant 定义变量的文件

--build.xml   Ant buildfile

为了实现自动从SVN 上更新最新代码,需要将 svnant.jarsvnClientAdapter.jarsvnjavahl.jar 这三个包放到项目的lib 下;配置邮件的时候,依赖 activation.jarmail.jar 这两个包,将他们放到Ant\lib 下。

这样基本配置就完成了。

bilid.xml 文件

<?xml version="1.0" encoding="GBK"?>

 <project name="junit-test" basedir="." default="mail">
 
 <!--  all properties are in build.properties -->
 <property file="build.properties"/>
 <!-- 1 step checkout source files -->
 <path id="project.classpath">
  <pathelement location="${svnjavahl.jar}" />
  <pathelement location="${svnant.jar}" />
  <pathelement location="${svnClientAdapter.jar}" />
 </path> 
 <taskdef resource="svntask.properties" classpathref="project.classpath"/>
 <target name="clean">
  <delete dir="${src.dir}"/>
 </target>
 <target name="checkoutThis" depends="clean">
  <svn username="${username}" password="${password}">
   <checkout url="${svnant.this.url}" revision="HEAD" destPath="${src.dir}"/>
  </svn>
 </target>
 <!--2 step run junit tests-->
 <!--
配置基本属性-->
 <property name="classpath" location="${build.dir}"/>
 <!--
配置测试报告的属性-->
  <property name="report.xml" value="${report.dir}/junit/xml"/>
  <property name="report.html" value="${report.dir}/junit/html"/>
  <!--
配置运行时classpath-->
 <path id="classpath.run">
  <pathelement path="${classpath}"/>
   <fileset dir="${lib.dir}">
    <include name="*.jar"/>
            </fileset>
 </path>
  <!--
配置测试时classpath-->
    <path id="classpath.test">
        <path refid="classpath.run"/>
        <path location="${dist.dir}/test-${DSTAMP}.jar"/>
    </path>
  <!--
任务初始化-->
    <target name="init" depends="checkoutThis">
        <tstamp/>
        <delete dir="${build.dir}"/>
        <delete dir="${report.dir}"/>
  <delete dir="${dist.dir}"/>
        <mkdir dir="${build.dir}"/>
  <mkdir dir="${dist.dir}"/>
  <copy todir="${build.dir}">
   <fileset dir="${src.dir}/src/main">
    <include name="**/*.*" />
    <exclude name="**/*.java"/>
   </fileset>
  </copy>
    </target> 
   <!--
配置编译源文件任务-->
    <target name="compile" depends="init">
        <javac srcdir="${src.dir}" destdir="${build.dir}">
        <classpath refid="classpath.run" />
  <include name="**/*.java"/>
  </javac>
    </target>
   <!--
配置打包任务-->
    <target name="dist" depends="compile">
        <mkdir dir="${dist.dir}"/>
        <jar jarfile="${dist.dir}/test-${DSTAMP}.jar" basedir="${build.dir}"/>
    </target>
   <!--
配置Juint 测试,打印测试结果-->
    <target name="test" depends="compile,dist">
         <mkdir dir="${report.xml}"/>
         <mkdir dir="${report.html}"/>
         <junit printsummary="yes" haltonfailure="no">
    <classpath refid="classpath.run"/>
    <classpath refid="classpath.test"/>
                <formatter type="xml"/>
                <batchtest fork="yes" todir="${report.xml}">
                     <fileset dir="${src.dir}/src/test" includes="**/*Test.java"/>
                </batchtest>
         </junit>
         <junitreport todir="${report.html}">
    <fileset dir="${report.xml}">
     <include name="*.xml"/>
                </fileset>
    <report format="frames" todir="${report.html}"/>
         </junitreport>
    </target>
  <!--
将测试结果页面打成jar-->
 <target name="JarReport" depends="test">
  <jar jarfile="${report.dir}/report-${DSTAMP}.jar" basedir="${report.dir}"/>
 </target>
 <!--
配置邮件-->
 <target name="mail" depends="JarReport">
  <mail mailhost="XXX" mailport="25" subject="Junit Test Result "> 
   <from address="XXX@XXX.com"/
   <to address="XXX@XXX.com "/ >
   <message>The nightly junit test has completed(refer to attachment)</message>
   <fileset dir="${report.dir}">  
    <include name="report-*.jar"/> 
   </fileset>
  </mail>
 </target>
 
</project>

五 实现定时运行

通过批处理文件可以实现定时运行Junit 测试,文件内容如下:

d:
cd project
ant

将文件命名为Auto.bat ,打开控制面板- 任务计划- 添加任务计划,选择Auto.bat ,并设定时间等。

至此,在系统设定的时间点,系统会自动执行该项目的单元测试用例,并将其结果发送给所配置的邮件接受者。

 

 

六 配置过程中遇到的问题

1 、将系统变量设为%ANT_HOME%\bin 后,在命令行输入ant ,却提示不是内部命令或者外部命令。

解决:系统变量更改后需要重新启动机器才能生效,或者在命令行中输入path *:\***\bin 让其生效。

2 、发送邮件的时候,提示     [mail] Failed to initialise MIME mail: javax/mail/MessagingException 错误

解决:将 activation.jar mail.jar 这两个包,将他们放到 Ant\lib 下。

分享到:
评论
1 楼 hlb1111 2008-11-21  
svnant.jar、svnClientAdapter.jar和svnjavahl.jar
还有activation.jar
这几个包到那里可以下
能不能把这几个包发一份邮件给我
hulbmail@gmail.com
谢谢!

相关推荐

    Ant+Junit+SVN的安装过程

    没有什么好说的,这是我配置的过程,拿出来大家分享,希望对您的工作有帮助

    自动化单元测试的可行性分析

    自动化单元测试的可行性分析 软件测试 纵观现在的企业应用,主流开发环境是:java+eclipse+cvs/svn+ant。.net的不了解,这里略过一万字,呵呵。 对于java开发环境来说,相信大部分企业都是这个样子。那么以此为...

    发布管理与配置管理之间的关系

    前段时间在公司做项目的时候遇到了一点问题,和大家来商量一下.取点经......项目大致被分为了配置管理,变更管理,持续集成,质量管理,发布...工具使用的是Hudson+Ant+JUnit等等其四:质量管理由CM组负责提供相应的工具,

    xml执行java源码-WeTest:WeTest是处理API接口测试的轻量级自动化测试框架,java语言实现,采用JUnit4开源框架,支持

    WeTest是处理API接口测试的轻量级自动化测试框架,java语言实现,拓展JUnit4开源框架,支持Ant/Maven执行方式。 工具特点: 1.支持suite,根据JUnit4测试类名正则匹配,聚合相同模块的用例,运行单个聚合类即可实现...

    junit in action 第2版 源码 part2

    Installing JUnit In Action Examples in Eclipse using SVN -------------------------------------------------------- 1 Install Eclipse 3.0+ Installing Ant -------------- 1 Download the latest Ant ...

    junit in action 第2版 源码 part6

    Installing JUnit In Action Examples in Eclipse using SVN -------------------------------------------------------- 1 Install Eclipse 3.0+ Installing Ant -------------- 1 Download the latest Ant ...

    junit in action 第2版源码 part1

    Installing JUnit In Action Examples in Eclipse using SVN -------------------------------------------------------- 1 Install Eclipse 3.0+ Installing Ant -------------- 1 Download the latest Ant ...

    junit in action第2版 源码 part5

    Installing JUnit In Action Examples in Eclipse using SVN -------------------------------------------------------- 1 Install Eclipse 3.0+ Installing Ant -------------- 1 Download the latest Ant ...

    junit in action 第2版 源码 part3

    Installing JUnit In Action Examples in Eclipse using SVN -------------------------------------------------------- 1 Install Eclipse 3.0+ Installing Ant -------------- 1 Download the latest Ant ...

    junit in action 第2版 源码 part4

    Installing JUnit In Action Examples in Eclipse using SVN -------------------------------------------------------- 1 Install Eclipse 3.0+ Installing Ant -------------- 1 Download the latest Ant ...

    java编程.数据库.j2ee架构与模式等电子书整合(2)

    3.apache-ant 4.apache-tomcat 5.数据库 6.web技术 7.java编程 8.基础知识 9.网络技术 10.apache-struts 11.j2ee架构与模式 12.Log4j 13.Eclipse 14.Svn 15.Xml 16.Tapestry 17.Junit 18.Ejb 19.Spring 20.Unix 21....

    iuhyiuhkjh908u0980

    仿照Appfuse 提供一个完全自动化的ant构建脚本.在线SHOP的数据库建模图例已经 在博客中贴出.感兴趣的和我一起搭建,嘻嘻 文档博客地址: http://forum.sinomagazine.com 开发环境: Jcreator-4.5 JDK-1.5 Ant-1.6.1 ...

    java编程.数据库.j2ee架构与模式等电子书整合(1)

    3.apache-ant 4.apache-tomcat 5.数据库 6.web技术 7.java编程 8.基础知识 9.网络技术 10.apache-struts 11.j2ee架构与模式 12.Log4j 13.Eclipse 14.Svn 15.Xml 16.Tapestry 17.Junit 18.Ejb 19.Spring 20.Unix 21....

    jpi.tar.gz

    'ace-editor.jpi', 'ansicolor.jpi', 'ant.jpi', 'antisamy-markup-formatter.jpi', 'apache-httpcomponents-client-4-api.jpi', 'authentication-tokens.jpi', 'bouncycastle-api.jpi', 'branch-api.jpi', 'build-...

Global site tag (gtag.js) - Google Analytics