初试JUnit

有幸看到熊节译的《重构:改善既有代码设计》,让我明白了单元测试的重要性,以及如何利用junit来进行重构。现把我对JUnit的“第一次亲密接触”感受整理出来,算是一个学习的轨迹点!

先引用JUnit主页http://www.junit.org/index.htm上的一段描述:
JUnit is a regression testing framework written by Erich Gamma and Kent Beck. It is used by the developer who implements unit tests in Java. JUnit is Open Source Software, released under the Common Public License Version 1.0 and hosted on SourceForge.

仅仅看到Erich Gamma 和 Kent Beck 的大名,就让我产生了对JUnit的足够兴趣;再者,Open Source--可以让我不花分文取得这两位大师的成果,可以让我有机会和很多同样对开源感兴趣的同志交流探讨,我何不去了解一二!

从网上找了几篇关于JUnit的文章看了看,总结出一个测试类的大体结构如下:
//执行测试的类(JUnit版)
import junit.framework.*;

//假设被测试的类名为Hello,则测试类名基本上就是HelloTest了

public Class HelloTest extends TestCase{

      //类构造函数

      public HelloTest ( String name){

            super(name);

      }

      //Fixture设置,有些人称其为Context设置

      Hello hello = null;

      ......

      //覆写TextCase的函数:setUp()---用来完成Fixture设置工作

      protected void setUp(){

            hello = new Hello();

            ......

      }

      //测试函数,完成每个测试工作;

      //其中会频繁用到assert系列函数,来判断结果是否符合期望值。

      Public void testHelloMethod1(){......}

      Public void testHelloMethod2(){......}

      ......

      //如果该测试类只完成一个Test Case的测试工作,也可以通过在suite()设置完成

      //如果该测试类只完成多个Test Case的测试工作则需要用到suite()函数:

      public static Test suite(){

            //如果希望有选择地进行Test Case的测试工作,可以如下设置

            TestSuite suite = new TestSuite();

            //利用java的reflection机制

            suite.addTest(new HelloTest(“testHelloMethod1”));

            suite.addTest(new HelloTest(“testHelloMethod2”));

            ......

            //也可以以如下方式实现

            //suite.addTest(

            // new HelloTest("HelloMethod1") { //字符串参数只是其标示作用
            // protected void runTest() { testHelloMethod1(); }
            // }
            //);

            //suite.addTest(

            // new HelloTest("HelloMethod2") {
            // protected void runTest() { testHelloMethod2(); }
            // }
            //);

            //......

            //如果希望完成该测试类的所有Test Case,则也可以如下设置:

            TestSuite suite = new TestSuite( HelloTest.class );


            // 返回TestSuite实例

            rerutn suite;

      }

      //覆写TextCase的函数:tearDown() ---用来释放你在setUp()中分配的资源

      protected void tearDown(){

            hello = null;

            ......

      }

      //main()函数可写可不写,如果有这个函数,则可以编译后直接运行:java HelloTest

      //否则,需要再控制台或IDE中以如下方式运行:

      // java junit.textui.TestRunner HelloTest(测试结果输出到控制台)或

      // java junit.awtui.TestRunner HelloTest(测试结果以图形界面形式表示)或

      // java junit.swingui.TestRunner HelloTest(同上)

      public static void main(String[] args){

            java junit.textui.TestRunner.run(suite());

            //或java junit.awtui.TestRunner.run(suite());

            //或 java junit.swingui.TestRunner.run(suite());

      }

}

发表于2004-8-21 9:01:19

整理于2005-07-01 15:04

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值