Ant与Junit结合

这周的任务是熟悉和应用JUnit+Ant+IC,我想有经验的程序员都清楚,有时环境的配置远比直接编程要痛苦。今天的主要精力花在研究JUnit和Ant。这当中遇到了很多的问题,也暴露了自己对Eclipse了解不足的缺点。简单梳理,记录一下

      一本不错电子资料:http://download.csdn.net/source/2624478

 

 

      JUnit简介 

     如果您要对撰写的程序进行测试,该如何进行呢?传统的测试方式通常依赖于人工对输出结果的判断,缺少效率且通常难以组织,且针对单一程序通常要设计专门的测试程序,如果您是在撰写Java,您可以使用JUnit来为您提供有效率的测试。 
 

   JUnit是一个开放原始码的Java测试框架(testing framwork),它用来撰写与执行重复性的测试,它是用于单元测试框架的xUnit架构的实例。

   JUnit包括以下的特性: 
   1. 对预期结果的断言
   2. 对相同共享数据的测试装备
   3. 易于组织与执行测试的测试套件 
   4. 图型与文字接口的测试器

   JUnit最初是由Erich Gamma与Kent Beck撰写

 

      

     在Eclipse中JUnit应用

     一般使用JUnit是需要jar包的,而MyEclipse中是自带

     图解 :http://zph999.blog.hexun.com/15108859_d.html

     

  

     举例  

     使用Assert类别中所提供的assertXXX()方法可以让您进行各种断言,如果断言失败,则可能传回AssertionFailedError或ComparisonFailure对象,您可以利用try....catch区块收集并显示这些对象所夹带的讯息,然后重新返回测试,然而事实上您不用自行设计,JUnit提供TestCase类别,您可以继承这个类别进行测试案例的撰写,并使用它的run()方法进行测试,TestCase对象会自行帮您收集测试失败时的相关讯息,之后您只要取得TestResult对象,就可以显示相关的讯息。

   

被测程序

  1. public class Student {   
  2.     private String _number;   
  3.     private String _name;   
  4.     private int _score;   
  5.                                                                                                   
  6.     public Student() {   
  7.         _number = null;   
  8.         _name = null;   
  9.         _score = 0;   
  10.     }   
  11.                                                                                                   
  12.     public Student(String num, String name, int score) {   
  13.         _number = num;   
  14.         _name = name;   
  15.         _score = score;   
  16.     }   
  17.                                                                                                   
  18.     public String getNumber() {   
  19.         return _number;   
  20.     }   
  21.                                                                                                   
  22.     public String getName() {   
  23.         return _name;   
  24.     }   
  25.                                                                                                   
  26.     public int getScore() {   
  27.         return _score;   
  28.     }   
  29.                                                                                                   
  30.     public void setNumber(String num) {   
  31.         _number = num;   
  32.     }   
  33.                                                                                                   
  34.     public void setName(String name) {   
  35.         _name = name;   
  36.     }   
  37.                                                                                                   
  38.     public void setScore(int score) {   
  39.         _score = score;   
  40.     }   
  41. }  
 

 

 

测试程序

[c-sharp] view plain copy print ?
  1. import junit.framework.*;   
  2.   
  3. public class TestIt extends TestCase {   
  4.     public TestIt(String name) {   
  5.         super(name);   
  6.     }   
  7.   
  8.     public void testGetMethod() {   
  9.         Student student = new Student("B83503124", "Justin", 100);   
  10.         assertEquals("B83503124", student.getNumber());   
  11.         assertEquals("Justin", student.getName());   
  12.         assertEquals(100, student.getScore());   
  13.     }   
  14.   
  15.     public void testSetMethod() {   
  16.         Student student = new Student();   
  17.         student.setNumber("B83503124");   
  18.         student.setName("Justin");   
  19.         student.setScore(100);   
  20.         assertEquals("B83503124", student.getNumber());   
  21.         assertEquals("Justin", student.getName());   
  22.         assertEquals(10, student.getScore());   
  23.     }   
  24. }  

 

 

运行结果:

 

      

参考资料:

http://zph999.blog.hexun.com/15108859_d.html

 

junit和ant

http://www.ibm.com/developerworks/cn/java/j-ant/

Ant简介

      Ant的全名是"Another Neat Tool",是由James Duncan Davidson在Make工具无法满足他的需求下所撰写出来的构建(build)工具,目前由Apache Software Foundation持续进行开发。

根据官方网站上的FAQ中"What is Apache Ant"的回答:

      Ant是以Java为基础的构建工具,理论上,它有些类似Make,但没有Make的缺点,并具有纯Java撰写的可移植性优点.(Ant is a Java-based build tool. In theory, it is kind of like Make, without Make's wrinkles and with the full portability of pure Java code.)

 

 

Ant作用

    对于没有使用过Make工具的初学者来说,想象一下您如何管理您的原始码?自动处理ClassPath的问题?在编译之后将编译过后的档案指定至某个目录?包装您的类库?甚至执行自动测试并将报告储存下来?这一切都可以透过Ant来完成!您不用不断的使用javac、copy、cd、java指令来达成这些目的,只要撰写好构建文件(buildfile),一个以XML组织的文件档案,之后,最简单的情况下,您只要下达ant指令,所有的一切就可以完成。 

    或许有人会说这些东西有些IDE也可以办到,这并不是正确的说法,Ant并不取代IDE,它补强了IDE,而也没有IDE可以取代Ant,他们是互补的,不是相互取代的。

 

简单的归纳一下Ant可以帮您自动完成的任务:
*编译Java原始码
*建立jar、war、zip档案
*自动测试与生成报告
*CVS等管理系统取得原始码

 

 

 

例子:HelloWorld

开发工具:MyEclipse8.5

具体的步骤:

1. 新建一个工程,工程的具体结构如下

 

2. Main中的代码

  1. package com.taobao.main;  
  2.   
  3. public class Main {  
  4.     public static void main(String[] args){  
  5.         System.out.println("Hello World");  
  6.           
  7.     }  
  8. }  

 

 3. MyEclipse自动生成Ant Build.xml

      选择你要生成Build.xml文件的项目,右键. Export-> General -> Ant Buildfiles .点Next,再点Finish.生成完毕.这时工程中会出现build.xml文件

 4. 修改Build.xml中的内容

      删除Build.xml中的所有内容,更改如下:

  1. <project name="example" default="compile">   
  2.   
  3.     <property name="src.dir" location="src"/>   
  4.     <property name="build.dir" location="build"/>   
  5.     <property name="backup.dir" location="bak"/>   
  6.   
  7.     <target name="prepare">   
  8.         <mkdir dir="${build.dir}"/>   
  9.         <mkdir dir="${backup.dir}"/>   
  10.         <copy todir="${backup.dir}">   
  11.             <fileset dir="${build.dir}"/>   
  12.         </copy>   
  13.     </target>   
  14.   
  15.     <target name="compile" depends="prepare">   
  16.         <javac srcdir="${src.dir}" destdir="${build.dir}"/>   
  17.     </target>   
  18. </project>  

      

5. 运行这个Build.xml

右键——run as —— Ant Build

 

控制台输出信息:

 6. 最后的结果

 

  

参考资料

Ant的官方网站:http://ant.apache.org/
Ant使用者手册:http://ant.apache.org/manual/index.html

ant简介:http://52347.javaeye.com/blog/695802

 MyEclipse自动生成Ant Build.xmlhttp://blog.sina.com.cn/s/blog_4d001c830100f8ki.html 

Ant入门教程:http://hi.baidu.com/fendy520/blog/item/574c20a8501df7b9cb130c92.html

之前的两篇《Junit和Ant入门》文章都是分开介绍两样工具的使用,这篇文章开始讲解如何将两项工具混合起来使用,如果是初学者,建议先看之前的两篇文章《Junit和Ant入门(1) JUnit》《Junit和Ant入门(2) Ant 》 。由于整个配置还是挺麻烦的,所以更需要我们循序渐进。

 

     为了让大家能更好地明白,我也是用例子讲解。同时也把自己遇到的问题,写出来。

     具体步骤

1. 导入Junit的jar包

    下载地址:http://download.csdn.net/source/2636855

    说明:虽然MyEclipse中是自带有JUnit的jar包的,但由于在使用Ant进行编译测试时需要用到JUnit的jar包,为防止冲突,我们导入自己需要Jar包

    具体的步骤:

    1)在工程中新建一个文件夹jars,将Junit的jar包拷贝到jars文件夹下

    2)右键工程——build path——add external archives ——选择在jars文件下的Junit的jar包

 

 

2. 编写代码

    具体的工程结构

 

源代码:

Main.java

  1. package com.taobao.zhujiadun.code;  
  2.   
  3. public class Main {  
  4.     private String name = "";  
  5.       
  6.     public Main(String _name){  
  7.         name = _name;  
  8.     }     
  9.     public String info(){  
  10.         return name;  
  11.     }  
  12. }  

 

MainTest.java

  1. package com.taobao.zhujiadun.test;  
  2.   
  3. import com.taobao.zhujiadun.code.Main;  
  4.   
  5. import junit.framework.TestCase;  
  6.   
  7.   
  8. public class MainTest extends TestCase{  
  9.     public void testMain(){  
  10.         Main m = new Main("zhujiadun");  
  11.         assertEquals("zhujiadun",m.info());   
  12.     }  
  13. }  

 

 

3. 配置ant Build.xml文件

右键. Export-> General -> Ant Buildfiles .点Next...  生成build.xml

 

4. Build.xml

  1. <?xml version="1.0"?>    
  2. <project name="testAnt" default="test">    
  3.     
  4.  <!-- properies -->    
  5.     <property name="src.dir" value="src" />     
  6.     <property name="classes.dir" value="class" />    
  7.     <property name="lib.dir" value="jars" />    
  8.     <property name="dist.dir" value="dist" />    
  9.     <property name="doc.dir" value="doc" />    
  10.     <property name="junit-report" value="junit-report" />    
  11.     <property name="cover-report" value="cover-report" />    
  12.     
  13.     <!-- 定义classpath,由于我涉及到单元测试的jar包了,所以我需要将包导进来 -->    
  14.     <path id="master-classpath">    
  15.         <fileset file="${lib.dir}/*.jar" />    
  16.         <pathelement path="${classes.dir}"/>    
  17.     </path>    
  18.     
  19.     <!-- 初始化任务 -->    
  20.     <target name="init">    
  21.     </target>    
  22.     
  23.     <!-- 编译 -->    
  24.     <target name="compile" depends="init" description="compile the source files">    
  25.         <mkdir dir="${classes.dir}"/>    
  26.         <javac srcdir="${src.dir}" destdir="${classes.dir}" >    
  27.             <!--设置了一个classpath,这点对于要使用到其他jar包的很重要-->   
  28.             <classpath refid="master-classpath"/>      
  29.         </javac>    
  30.     </target>    
  31.     
  32.     <!-- 测试 -->    
  33.     <target name="test" depends="compile" description="run junit test">    
  34.         <mkdir dir="${junit-report}"/>    
  35.         <junit printsummary="yes" >    
  36.             <classpath refid="master-classpath" />    
  37.             <formatter type="plain"/>    
  38.             <batchtest todir="${junit-report}">    
  39.                 <fileset dir="${src.dir}">    
  40.                     <include name="**/*Test.java"/>    
  41.                 </fileset>    
  42.                 <formatter type="xml"/>  
  43.             </batchtest>    
  44.         </junit>    
  45.           
  46.         <junitreport todir="${junit-report}">  
  47.         <fileset dir="${junit-report}">  
  48.         <include name="TEST-*.xml"/>  
  49.         </fileset>  
  50.         <!-- 带有框架,可以用noframes选不带框架 -->  
  51.         <report format="noframes" todir="${junit-report}"/>  
  52.         </junitreport>  
  53.           
  54.     </target>    
  55. </project>  

 

 

5. 运行结果

控制台输出信息:

 

 

具体工程:

注意红色圈圈内的部分

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值