论坛首页 Java企业应用论坛

JUNIT简单实例及模板

浏览 6395 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2007-06-18  

关键词:JUNIT
环境:windows2000,Eclipse3.1,JDK1.4
        开发过程中进行单元测试,尽可能尽早的将BUG找出,是开发者应该做的。JUNIT为JAVA开发者提供了一个很好的测试机制,以下是一个简单的JUNIT应用实例,也是初学可供参考的JUNIT模板。

java 代码

  1. package junit.sineat.templet;   
  2. import java.util.Hashtable;   
  3. import junit.framework.Assert;   
  4. import junit.framework.TestCase;   
  5. import junit.framework.TestSuite;   
  6.   
  7. public class JunitB extends TestCase{   
  8.     /**定义你需要测试的类及用到的变量*****************************/  
  9.     public Hashtable hasha=null;//   
  10.     public Hashtable hashb=null;   
  11.     /*******************************************************/      
  12.     public JunitB(String name){        
  13.         super(name);//创建子类         
  14.     }   
  15.     /**用setUp进行初始化操作*/  
  16.     protected void setUp() throws Exception {   
  17.         super.setUp();   
  18.         hasha =new Hashtable();//这里    
  19.     }   
  20.     /**用tearDown来销毁所占用的资源*/  
  21.     protected void tearDown() throws Exception {   
  22.         super.tearDown();   
  23.         //System.gc();   
  24.     }   
  25.     /**写一个测试方法断言期望的结果**/  
  26.     public void testBodyStatus() {     
  27.         //hasha =new Hashtable();//有此句后也可去掉setUp() tearDown()   
  28.         assertNotNull(hasha);          
  29.         //hasha.put("0","let's try again");//test1.error版   
  30.         assertTrue(hasha.isEmpty());//期望为空         
  31.     }   
  32.     /**再写一个测试方法断言期望的结果**/  
  33.     public void testBodySame() {           
  34.         //hashb=(Hashtable)hasha.clone();   //test2.error版   
  35.         hashb=hasha;                        //test2.OK 版   
  36.         Assert.assertSame(hasha,hashb);        
  37.     }   
  38.     /**suite()方法,使用反射动态的创建一个包含所有的testXxxx方法的测试套件**/  
  39.     public static TestSuite suite()  {   
  40.         return new TestSuite(JunitB.class);   
  41.     }   
  42.     /****写一个main()运行测试*****************/  
  43.     public static void main(String args[]) {   
  44.         junit.textui.TestRunner.run(suite());//以文本运行器的方式方便的        
  45.         //junit.swingui.TestRunner.run(JunitB.class);   
  46.     }   
  47. }   

        以上为JUNIT的简单测试样例,不需过多考虑性能及规范,但资深JAVA开发者建议:
一、不要在测试用例的构造函数中做初始化
    答案是重载测试用例的setUp()方法进行初始化。
二、不要假定测试用例中测试的执行次序
    好的习惯是保持测试之间的独立性,使得它们在任何次序下执行的结果都是相同的。
三、测试要避免人工干预
    经验二讲的是不同的测试要避免相关性,而经验三讲的其实就是测试要避免自相关。
四、在子类中调用父类的setUp() 和tearDown()
五、不要硬性规定数据文件的路径
六、把测试的代码和被测的代码放在同样的目录下
七、正确命名测试
八、书写测试时要考虑地区和国家设置
九、利用Junit 的自动异常处理书写简洁的测试代码
     事实上在Junit 中使用try-catch 来捕获异常是没有必要的,Junit 会自动捕获异常。那些没有被捕获的异常就被当成错误处理。
十、充分利用Junit 的assert/fail 方法
     assertSame()用来测试两个引用是否指向同一个对象
     assertEquals()用来测试两个对象是否相等
十一、确保测试代码与时间无关
十二、使用文档生成器做测试文档。
    以上资料来自:“JUnit使用经验”,原作:Andy Schneider Richard Dallaway 等,编译:PMT 测试工作组。

论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics