JUnit教程 ---- 快速起步

-- 快速起步
 
JUnit是个好东西,做大点的项目离不开这东西,实际中用的时候也因为时间和人力的关系,仅仅写个TestCase(测试单元),运行一下看看就扔过去了,过后也不维护测试代码。
 
所用的JUnit包为3.8.2。
 
JUnit这东西,说复杂也复杂,说简单也简单,关于JUnit的叙述解说网上一堆一堆,可是就找不到个简单点又能说明问题的附带有完整代码可运行的例子。下面给出一个三分钟的入门的例子大家看看。
 
一、写测试目标(业务相关的类)
 
/** 
* 
* 测试对象 
* User: leizhimin 
* Date: 2008-3-13 14:58:58 
*/
 
public   class  Calcuator {  
     public   double  add( double  n1,   double  n2) {  
         return  n1 + n1;  
    }  
}
 
二、写测试用例
 
import  junit.framework.TestCase;  

/** 
* 测试用例 
* File: TestCalcuator.java 
* User: leizhimin 
* Date: 2008-3-13 15:00:17 
*/
 
public   class  TestCalcuator   extends  TestCase {  
     public   void  testAdd(){  
        Calcuator calcuator= new  Calcuator();  
         double  result=calcuator.add(1,2);  
        assertEquals(3,result,0);  
    }  

}
 
import  junit.framework.TestCase;  

/** 
* 测试用例 
* File: TestCalcuator2.java 
* User: leizhimin 
* Date: 2008-3-13 16:13:29 
*/
 
public   class  TestCalcuator2   extends  TestCase  {  
     public   void  testAdd(){  
        Calcuator calcuator= new  Calcuator();  
         double  result=calcuator.add(1,2);  
        assertEquals(3,result,0);  
    }  
}
 
三、写测试单元
 
import  junit.framework.TestSuite;  
import  junit.framework.Test;  
import  junit.textui.TestRunner;  

/** 
* 测试单元 
* File: TestAll.java 
* User: leizhimin 
* Date: 2008-3-13 16:17:10 
*/
 
public   class  TestAll   extends  TestSuite {  
     public   static  Test suite() {  
        TestSuite suite =   new  TestSuite( "TestSuite Test");  
        suite.addTestSuite(TestCalcuator. class);  
        suite.addTestSuite(TestCalcuator2. class);  
         return  suite;  
    }  
     public   static   void  main(String args[]){  
        TestRunner.run(suite());  
    }  
}
 
四、运行单元测试的main()方法
 
控制台打印出结果如下:
..  
Time: 0  

OK (2 tests)  


Process finished with exit code 0  
 
 
运行图形界面显示结果:
 
 
这个例子100%可以运行。呵呵,看到了吧。
 
这个仅仅是个起步例子,在实际中还应该注意测试数据的预备,测试结束后要恢复测试环境的状态,

-- 实际应用
 
接上文“ JUnit三分钟教程 ---- 快速起步”,续写一篇,以便能真正将JUnit用到项目的测试中。
 
进行测试确不清理垃圾数据就像随地大小便一样让人无法忍受!
 
测试是应该进行,如果测试过程中给数据库中写入了垃圾数据怎么办,不用担心,JUnit的设计者早已考虑到了这个问题,下面看如何控制“测试垃圾”的回收。
 
结合Eclipse,这个实现非常的简单,80%的代码是Eclipse生成的,呵呵。
 
一、测试目标
 
public   class  Calc {  
  
     private   int  a,b;  
  
  
     public  Calc() {  

    }  


     public   int  add() {  
   return  a + b;  
    }  


     public   int  getA() {  
   return  a;  
    }  


     public   void  setA( int  a) {  
   this.a = a;  
    }  


     public   int  getB() {  
   return  b;  
    }  


     public   void  setB( int  b) {  
   this.b = b;  
    }  
  
}
 
二、写测试用例
测试用例中的setup()方法会在测试逻辑最先调用。就相当于做初始化工作。
 
测试用例中的tearDown() 方法在测试逻辑之后调用。充当一个清理战场的角色,以清楚测试过程中对现场的状态的破坏。
 
 
import  junit.framework.TestCase;  


public   class  CalcTest1   extends  TestCase {  
    Calc c= new  Calc();  

     protected   void  setUp()   throws  Exception {  
  c.setA(2);  
  c.setB(1);  
    
    }  

     protected   void  tearDown()   throws  Exception {  
  c= null;  
    }  

     public   void  testAdd() {  
   int  result=c.add();  
  assertEquals(3,result,0);  
//  fail("尚未实现"); // TODO 
    }  

}
 
import  junit.framework.TestCase;  


public   class  CalcTest2   extends  TestCase {  
    Calc c= new  Calc();  

     protected   void  setUp()   throws  Exception {  
  c.setA(2);  
  c.setB(1);  
    
    }  

     protected   void  tearDown()   throws  Exception {  
  c= null;  
    }  

     public   void  testAdd() {  
   int  result=c.add();  
  assertEquals(3,result,0);  
//  fail("尚未实现"); // TODO 
    }  

}
 
本例中没有测试垃圾,因此tearDown() 实际上可以不用写。
 
三、生成测试单元
 
import  junit.framework.Test;  
import  junit.framework.TestSuite;  


public   class  AllTests {  

     public   static  Test suite() {  
  TestSuite suite =   new  TestSuite( "Test for default package");  
   //$JUnit-BEGIN$ 
  suite.addTestSuite(CalcTest1. class);  
  suite.addTestSuite(CalcTest2. class);  
   //$JUnit-END$ 
   return  suite;  
    }  

}  
 
 
四、在Eclipse中执行单元测试
 
~~~周末愉快!!

本文出自 “熔 岩” 博客,转载请与作者联系!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值