您的位置:首页 > 数据库

测试驱动开发(tdd)学习笔记 (2) 工具,技术 junit

2005-11-27 12:42 543 查看
java 下面最常用的是junit (http://www.junit.org/),
基本用法是
1、import junit 包
2、定义一个测试类,最好以test开头,以方便ide自动搜索测试,测试类继承自TestCase,然后在里面写自己的test 方法,测试代码主要是运行类的各种方法,并用assert判断是否与预期相同。核心的assert 方法有
assertTrue ,assertFalse,assertNull,assertNotNull,assertSame,assertNotSame,assertEquals,还有一个fail直接写fail(),就会提示测试失败。
   public class testMath  extends TestCase{
         public void testSum(){
              assertEquals("3加2应该等于5",5,math1.sum(3,2));
         }
}
3、如果测试类里面的每个测试都需要初始化某些资源,那么可以把初始化的代码放到测试类的初始化方法(setUp)里面,并在类的拆卸(tearDown)方法里面作善后工作。例如,在作数据库测试的时候,可以在(setUp)方法里面备份当前数据库,并把当前数据库里面的数据恢复为测试数据,并在(tearDown)方法里面将数据库恢复为当前数据。junit 会为每个测试方法运行一次(setUp)和(tearDown),以保证各个测试方法之间互不影响。
   public class testMath  extends TestCase{
        public void setUp(){
           初始化代码;
       }
       public void tearDown(){
          善后代码;
       }
        public void test1(){
              .......(测试代码1)
         }
       
        public void test2(){
              .......(测试代码2)
         }
       
        public void test3(){
              .......(测试代码3)
         }
}
在这个例子里面,(setUp)和(tearDown)会被执行三次。
关于testCase 的管理
       多个testCase可以被添加到一个testSuite里面,多个testSuite也可以被加到一个testSuite里面。
public class TestMySuit extends TestSuite{
     public TestMySuit(){
        super();
     }
     public static Test suite(){
           TestSuite suite = new TestSuite();
           suite.addTestSuite(myTest1.class);
            suite.addTestSuite(myTest2.class);
             return suite;
}
关于junit自己的扩展
1、ActiveTestSuite
     在 这个suite里面的每个测试会在独立的线程里面运行,有几个测试,就有几个线程。
2、ExceptionTestCase 作者不建议用这个,既然不建议用,我就没看了
3、testDecorator
    顾名思意,这个是对test进装饰的类,抄个书上的例子
  public class InstrumentedTest Extends TestDecorator{
       public instrumentedTest(Test arg0){
            super(arg0);
      }
       public void run(TestResult result){
            System.out.println("Starting "+ fTest.toString());
             basicRun(result);
       }
}
public class InstrumentedTest Tester extends TestCase{
     public void testMethod(){
     //...
     }
     public static Test suite(){
          TestSuite suite = new TestSuite();
          Test test = new InstrumentedTest Tester("testMethod");
          suite.addTest(new instrumentedTest(test));
           return suite;
         }
        public static.void main(String args[]){
             junit.textui.TestRunner.run(suite());
        }
}
4、RepeatedTest
public class RepeatedTest   Tester Extends TestCase{
    public void testMethod(){
    }
     public static void main(String args[]){
      Test test = new RepeatedTest Tester("testMethod");
       junit.textui.TestRunner.run(new RepeatedTest(test,10));
     }
}
5、TestSetup 这个和testCase 的setUp和tearDown类似,不过是用于testSuite。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息