理解JUnit

    之前对JUnit工具使用[1]进行了学习,对Eclipse下用Ant运行JUnit[2]进行了测试。这里深入理解下JUnit的具体使用方法。

    Junit是一个回归测试框架(regression testing framework),是程序员测试,也就是所说的白盒测试。在白盒测试中,测试人员知道程序如何实现,也知道他们所具有的功能。这个框架继承自TestCase类,可以自动测试,具有批量测试的功能。在TDD(测试驱动开发)中,测试代码甚至可以先于实际代码编写。

    由于在Eclipse中集成了JUnit,所以不需要再下载。Eclipse中集成的JUnit分为第三版和第四版两种,对同一个代码math.java这两种测试方法自动生成的代码分别如下:

math.java代码:

package www.gongqingkui.cn;
 
public class math {
         public int add(inta,int b){return a+b;}
         public int sub(inta,int b){return a-b;}
}

    生成测试代码架构有两种方法,第一种是直接右击新建Junit test case,第二种是从文件->新建->other->JUnit test case。

    生成的JUnit3测试代码:

package www.gongqingkui.cn;
import junit.framework.TestCase;
public class mathTest extends TestCase {
         private math m;
         protected void setUp()throws Exception {
                  m = newmath();
         } 
         protected voidtearDown() throws Exception {
                  m = null;
         } 
         public void testAdd(){
                  assertEquals(2,m.add(1, 1));
         }
 
         public void testSub(){
                  //fail("fail");
                  assertEquals(1,m.sub(4, 2));
         }
}

    生成的JUnit4测试代码:

package www.gongqingkui.cn;
import static org.junit.Assert.*;
import org.junit.After;
import org.junit.AfterClass;
import org.junit.Before;
import org.junit.BeforeClass;
import org.junit.Test;
public class mathTest {
         private math m;
         @BeforeClass
         public static voidsetUpBeforeClass() throws Exception {
         }
         @AfterClass
         public static voidtearDownAfterClass() throws Exception {
         }
         @Before
         public void setUp()throws Exception {
                  m = newmath();
         }
         @After
         public void tearDown()throws Exception {
                  m = null;
         }
         @Test
         public void testAdd(){
                  assertEquals(2,m.add(1,1));
         }   
         @Test
         public void testSub(){
                  assertEquals(2,m.sub(3,1));
         }
}

    JUnit初始化流程是:测试开始->setUp->testAdd方法->tearDown->测试完成。注意这里的setUp方法和tearDown方法常用于初始化测试环境。需要注意的是每一个测试开始和结束时,都需要调用这两个方法。本例中我们修改了代码,在setUp中新建了待测试对象,在tearDown中对它进行清理。一个JUnit3的测试类通常是这样:继承自TestCase类,定义了一些列以test开头的方法,内部有一些assert断言。JUnit4的测试类采用了Java的新特性,可以不用test开头,一些方法也不用固定的名字,而是使用例如@Test这样的方法。在JUnit4中,有了BeforeClass和AfterClass两个函数,这两个函数不同于setUp和tearDown方法,他只是在整个类开始执行和执行完成后才运行,节省了对堆栈内存操作的时间。

    JUnit3有一个TestSuit类,可以把一组测试结合起来,我们新建JUnitTestSuite就可以将上述过个测试和成为一个测试了。例如本例我们又新建了另一个测试文件mathTest2.java,其代码和mathTest.java一致。新建JUnitTestSuite时,就可以直接将测试类加入其中,一次运行完成所有测试。

package www.gongqingkui.cn;
import junit.framework.Test;
import junit.framework.TestSuite;
public class AllTests {
         public static Testsuite() {
                  TestSuitesuite = new TestSuite("Test for www.gongqingkui.cn");
                  //$JUnit-BEGIN$
                  suite.addTestSuite(mathTest.class);
                  suite.addTestSuite(mathTest2.class);
                  //$JUnit-END$
                  return suite;
         }
}


    JUnit中常用的断言有:assertEquals用于判断是否相等,其第一参数消息是可选的。AssertTrue是判断布尔值是否为真的,与其对应的是assertFalse判断布尔值是否为假,类似assertNull用于判断是对象否为空,assertSame用于判断对象是否是指向同一个的,Fail会使测试立即失败,通常放在测试所不能到达的地方。

参考:

1.JUnit工具使用

2.Eclipse下用Ant运行JUnit

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

gongqingkui

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值