首页 > 代码库 > Java:JUnit4使用详解

Java:JUnit4使用详解

对于Junit的解释不太懂,现在我们看一下;   

我们此次针对的是Junit4版本,注解也是在Junit4版本才有的,之前的版本并无注解功能。而注解开发基本上被认为是一种优秀的设计,所以我们写单元测试用例时,尽可能地去了解并使用注解。

     @Test:使用该注解的方法为测试方法,自动运行时能够识别并被执行

      包含两个参数:expected=XXXException.class 期望出现的异常

                               timeout=xxx 设定程序运行的超时时间

     @Ignore:被忽略的测试方法

     @Before:在每个测试方法之前运行

     @After: 在每个测试方法之后运行

     @BeforeClass:在所有测试开始之前运行

     @AfterClass:在所有测试开始之后运行 

     注意:

     (1) @Before与@BeforeClass的区别

     @Before会加在每个方法前执行,即有几个@Test就会执行几遍。

     @BeforeClass 只在所有测试之前执行,只会执行一次。并且@BeforeClass修饰的方法必须是公有的静态方法(public static )。

     @After和@AfterClass也类似

     (2)每个测试类中这四个注解不能重复使用,一个方法只能从这四个注解中挑选其中一个。

 

  重点:

   (3)如果不希望某个方法执行: @Ignore() 可以标注不参与测试的测试方法。当然也可以通过去除注解 @Test 来达到这个目的,但去除注解 @Test 会令到eclipse的JUnit View中无法显示该测试方法。

 

比如:

package gc;import static org.junit.Assert.*;import org.junit.After;import org.junit.AfterClass;import org.junit.Before;import org.junit.BeforeClass;import org.junit.Ignore;import org.junit.Test;public class JUnit4Test {@Beforepublic void before() {  System.out.println("@Before");}@Testpublic void test() {  System.out.println("@Test");  assertEquals(5 + 5, 10);} @Ignore@Testpublic void testIgnore() {  System.out.println("@Ignore");} @Test(timeout = 50)public void testTimeout() {  System.out.println("@Test(timeout = 50)");  assertEquals(5 + 5, 10);} @Test(expected = ArithmeticException.class)public void testExpected() {  System.out.println("@Test(expected = Exception.class)");  throw new ArithmeticException();} @Afterpublic void after() {   System.out.println("@After");  }    @BeforeClass  public static void beforeClass() {   System.out.println("@BeforeClass");  };    @AfterClass  public static void afterClass() {   System.out.println("@AfterClass");  };};

  结果为:

@BeforeClass@Before@Test(timeout = 50)@After@Before@Test(expected = Exception.class)@After@Before@Test@After@AfterClass

  

Java:JUnit4使用详解