JUnit

来源:互联网 发布:亿百润 知乎 编辑:程序博客网 时间:2024/06/06 13:59

1 JUnit介绍

  JUnit是由Erich Gamma and Kent Beck两位大牛设计的。

 其目的是为了提供更好的测试工具。

JUnit是函数级别的测试,所以叫做unit。

一个类应该测试什么呢?测试其中的函数。JUnit针对这种需求,就开发了针对一个类中的函数的测试。

2 JUnit理解

一般一个java 类有一个相应的test类。如HelloWorld.java 有一个对应的HelloWorldTest.java。这个HelloWorldTest中包含有很多test函数,对源代码中的各个函数进行测试,如包括了

testfunc()1;

testfunc()2; 

testfunc()3;

那么我在类中应该怎么写呢?

public class HelloWorldTest{

  HelloWorld helloWorld = new HelloWorld();

  public static void main(String args[]){

   HelloWorldTest test =  new HelloWorldTest();

   test.testfunc()1;

   test.testfunc2();

   test.testfunc3();

   summaryAndReport();

 }

 

  public testfunc1(){

    prepare();

    helloWorld.func1();

    verifyTestResult();

    finalize();

  }

  ......

}

如果老是这么写,那么这个是我们普通工程师的福音啊,跟老板说我今天写了多少多少行代码,既有功劳,也有苦劳,还不费心。

但是大牛们就不干了,大牛的时间宝贵啊,说你们不能忽悠老板啊。老板我来!

于是大牛们抽丝剥茧,抽象解耦,封装抽离,做了这么一个框架JUnit,我们普通工程师只需要写最关键的业务代码,其余重复部分或者叫做不变部分由框架JUnit代劳。

那么看看上面代码中有哪些是和业务相关的,有哪些是公共的,抽象的,不变的,可以抽离成框架的呢?

1) main函数太讨厌了,每次都要写,其实对我的测试程序来说,都是一样的。拿到框架中

2) 我写的测试函数,每次都会被调用的,可是我每次还要显示写一遍,太麻烦了,拿到框架中

3)summayAndReport部分其实和我的代码是没有关系的,如果程序中没有这一部分,也行,但是我每次要肉眼去看成功了没有。不如写一个专门的summayAndReport模块,帮我们完成这个任务

4)在功能verifyTestResult中,提供了assert方法,可以更方便的实现verify功能

5)抽出prepare为setup方法,抽出finalize为teardown方法。

所以使用JUnit后,你的程序简化为

public class HelloWorldTest extends TestCase{

  HelloWorld helloWorld = new HelloWorld(); 

  public testfunc1(){   

    helloWorld.func1();

    verifyTestResult();

  }

  ......

}


3 类图架构




0 0
原创粉丝点击