標籤:timeout cep for stat 執行 異常 不能 on() 運行時
對於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使用詳解