如何寫好Junit單元測試
最近準(zhǔn)備做一個(gè)Junit測試的項(xiàng)目,先淺顯研究了一下Junit4,稍作記錄。
Junit4通過Annotation來表明各個(gè)方法的作用,最常用到的是
@Test :測試方法,一個(gè)測試類中可以有多個(gè),必須是public void的方法
@Before :同一個(gè)測試類中的每個(gè)測試方法之前運(yùn)行一次,必須是public void 非 static的方法,一個(gè)類中可以有多個(gè)
@After :同一個(gè)測試類中的每個(gè)測試方法之后運(yùn)行一次,必須是public void非 static的方法,一個(gè)類中可以有多個(gè)
@BeforeClass :同一個(gè)測試類中的所有測試方法運(yùn)行之前運(yùn)行一次,必須是public static void的方法,適合做一些代價(jià)較高且所有測試方法都可以共用的資源的分配工作
@AfterClass : 同一個(gè)測試類中的所有測試方法運(yùn)行之后運(yùn)行一次,必須是public static void的方法,適合做一些所有測試方法跑完后的資源釋放工作
@Ignore :暫時(shí)不需要跑的方法
試著寫了個(gè)測試類來使用到上述6個(gè)annotation
public class Calculator { /** * @param args */ public Calculator(){ } public int add(int arg1, int arg2){ return (arg1 + arg2); } public int minus(int arg1, int arg2){ return (arg1 - arg2); } } |
import java.util.Date; import org.junit.*; public class testBase { private static Calculator cal; @BeforeClass public static void beforeClass(){ System.out.println("BeforeClass"); cal = new Calculator(); } @Before public void before1(){ System.out.println(new Date()); } @Before public void before2(){ System.out.println("Before 2"); } @Test public void test1(){ System.out.println("Test 1"); Assert.assertEquals(2, cal.add(1, 1)); } @Test public void test2(){ System.out.println("Test 2"); Assert.assertTrue(1 == cal.minus(2, 1)); } @Test @Ignore public void test3(){ System.out.println("Test 3"); } @After public void after1(){ System.out.println(new Date()); } @After public void after2(){ System.out.println("After 2"); } @AfterClass public static void afterClass(){ System.out.println("AfterClass"); } } |
運(yùn)行結(jié)果如下
BeforeClass Before 2 Thu Nov 07 21:35:00 CST 2013 Test 1 Thu Nov 07 21:35:00 CST 2013 After 2 Before 2 Thu Nov 07 21:35:00 CST 2013 Test 2 Thu Nov 07 21:35:00 CST 2013 After 2 AfterClass |
可以看出BeforeClass和AfterClass都只執(zhí)行一遍,Before和After 在每個(gè)case運(yùn)行前后都執(zhí)行一遍,多個(gè)Before或After運(yùn)行順序與放置順序沒有必然聯(lián)系。標(biāo)識為Ignore的方法沒有被執(zhí)行。
posted on 2013-11-22 12:14 順其自然EVO 閱讀(483) 評論(0) 編輯 收藏 所屬分類: 測試學(xué)習(xí)專欄