JUnit 4 简单使用

来源:互联网 发布:在兴唐通信上班 知乎 编辑:程序博客网 时间:2024/06/09 14:55

先看一下JUnit3与4的区别

 

从前用JUnit3的时候写一个测试的类就需要去继承TestCase这个类,像下面这类

publicclass NewTestextends TestCase {

    public void setUp() {super
.setUp(); }
   
publicvoid tearDown() {super
.tearDown(); }

   
publicvoid testMethod1() { assertTrue(true
); }
   
publicvoid
 testMethod2() {...}
   
publicvoid
 testMethod3() {...}
}

JUnit3依赖反射来执行每个以test开头的方法,并且在setUp()和tearDown()这两个方法执行测试类里开始和结束时需要做的准备动作

 

下面再来看看JUnit4的实现

import static org.junit.Assert.*;
publicclass NewTest {

    @Before
    publicvoid setUp() {...}
    @After
   
publicvoid tearDown() {...
}

    @Test
   
publicvoid testMethod1() {Assert.assertTrue(true
); }
    @Test
   
publicvoid
testMethod2() {assertTrue(true);}
    @Test
    publicvoidtestMethod3() {...}
}

JUnit4利用Java 5的Annotation特性简化测试用例的编写.现在测试类可以不用继承TestCase类,而以@Before与@After两个标记代替了TestCase类中实现的setUp()与tearDown()这两个方法,并且方法名不是必须使用setUp,tearDown,只要方法前使用了标记

 

断言(assert)

在JUnit4中,因为没有继承TestCase类,所以并不能直接使用assertXXX(),这些方法被封装在了org.junit.Assert类中,你可以静态的引入该类,并在测试类中调用assertXXX(),或者是以Assert.assertTrue(true);的形式去调用

 

异常测试(Exception)

对测试异常,JUnit 4可以用expected=Exception.class来期待一个预期的异常,而不必编写try{...}catch(XXX){...}

除零测试

@Test(expected=ArithmeticException.class)
public void
doDiv0() {
    
newMath().div(127,0
);
}

 

超时测试(timeout)

在@Test,使用"timeout"参数。如果测试运行的时间超过指定的毫秒数,则测试失败。

@Test(timeout=1)
public void
 doLongTimeTask() {
    
doubled = 0
;
    
for(inti=1; i<10000000; i++
)
        d
+=
i;
}

 

@BeforeClass 和 @AfterClass

    在JUnit3,如果想仅调用一次setUp()和tearDown()  for  all test cases, 使用TestSetup类;在JUnit4,就省事了:
@BeforeClass
public static void
  runBeforeClass(){...}

@AfterClass
public static void
  runAfterClass(){...}
 

 


原创粉丝点击