junit4測試學習

JUnit 4 使用 Java 5 中的註解(annotation),如下是JUnit 4 經常使用的幾個 annotation 介紹單元測試

@Before:初始化方法測試

@After:釋放資源spa

@Test:測試方法,在這裏能夠測試指望異常和超時時間資源

@Ignore:忽略的測試方法it

@BeforeClass:針對全部測試,只執行一次,且必須爲static voidio

@AfterClass:針對全部測試,只執行一次,且必須爲static voidclass

一個JUnit 4 的單元測試用例執行順序爲:test

@BeforeClass –> @Before –> @Test –> @After –> @AfterClassimport

每個測試方法的調用順序爲:方法

@Before –> @Test –> @After

寫個例子測試一下,測試一下

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 {

@Before

public void before() {

  System.out.println("@Before");

}

@Test

public void test() {

  System.out.println("@Test");

  assertEquals(5 + 5, 10);

}


@Ignore

@Test

public 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();

}


@After

public 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

 

@BeforeClass and @AfterClass                     @Before and @After

在一個類中只能夠出現一次                                  在一個類中能夠出現屢次,便可以在多個方法的聲明前加上這兩個                                                                                          Annotaion標籤,執行順序不肯定

方法名不作限制                                                   方法名不作限制

在類中只運行一次                                                在每一個測試方法以前或者以後都會運行一次

@BeforeClass父類中標識了該Annotation的        @Before父類中標識了該Annotation的方法將會先於當前類中標識了該

方法將會先於當前類中標識了該Annotation的       Annotation的方法執行。

方法執行。

@AfterClass 父類中標識了該Annotation的          @After父類中標識了該Annotation的方法將會在當前類中標識了該

方法將會在當前類中標識了該Annotation的           Annotation的方法以後執行

方法以後執行

必須聲明爲public static                                        必須聲明爲public 而且非static

全部標識爲@AfterClass的方法都必定會被執行      全部標識爲@After 的方法都必定會被執行,即便在標識爲

,即便在標識爲@BeforeClass的方法拋出異常       @Before 或者 @Test 的方法拋出異常的的狀況下也同樣會。

的的狀況下也同樣會。 

 

@BeforeClass 和 @AfterClass 對於那些比較「昂貴」的資源的分配或者釋放來講是頗有效的,由於他們只會在類中被執行一次。相比之下對於那些須要在每次運行以前都要初始化或者在運行以後都須要被清理的資源來講使用@Before和@After一樣是一個比較明智的選擇。

相關文章
相關標籤/搜索