qileilove

          blog已經(jīng)轉(zhuǎn)移至github,大家請(qǐng)?jiān)L問 http://qaseven.github.io/

          如何寫好Junit單元測(cè)試

            最近準(zhǔn)備做一個(gè)Junit測(cè)試的項(xiàng)目,先淺顯研究了一下Junit4,稍作記錄。
            Junit4通過Annotation來表明各個(gè)方法的作用,最常用到的是
            @Test :測(cè)試方法,一個(gè)測(cè)試類中可以有多個(gè),必須是public void的方法
            @Before :同一個(gè)測(cè)試類中的每個(gè)測(cè)試方法之前運(yùn)行一次,必須是public void 非 static的方法,一個(gè)類中可以有多個(gè)
            @After :同一個(gè)測(cè)試類中的每個(gè)測(cè)試方法之后運(yùn)行一次,必須是public void非 static的方法,一個(gè)類中可以有多個(gè)
            @BeforeClass :同一個(gè)測(cè)試類中的所有測(cè)試方法運(yùn)行之前運(yùn)行一次,必須是public static void的方法,適合做一些代價(jià)較高且所有測(cè)試方法都可以共用的資源的分配工作
            @AfterClass : 同一個(gè)測(cè)試類中的所有測(cè)試方法運(yùn)行之后運(yùn)行一次,必須是public static void的方法,適合做一些所有測(cè)試方法跑完后的資源釋放工作
            @Ignore :暫時(shí)不需要跑的方法
            試著寫了個(gè)測(cè)試類來使用到上述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)識(shí)為Ignore的方法沒有被執(zhí)行。

          posted on 2013-11-22 12:14 順其自然EVO 閱讀(485) 評(píng)論(0)  編輯  收藏 所屬分類: 測(cè)試學(xué)習(xí)專欄

          <2013年11月>
          272829303112
          3456789
          10111213141516
          17181920212223
          24252627282930
          1234567

          導(dǎo)航

          統(tǒng)計(jì)

          常用鏈接

          留言簿(55)

          隨筆分類

          隨筆檔案

          文章分類

          文章檔案

          搜索

          最新評(píng)論

          閱讀排行榜

          評(píng)論排行榜

          主站蜘蛛池模板: 瑞金市| 汝城县| 株洲市| 论坛| 安图县| 满城县| 南雄市| 上栗县| 七台河市| 阜南县| 来凤县| 特克斯县| 兴宁市| 河源市| 白沙| 彭泽县| 来凤县| 宜州市| 周至县| 容城县| 玛多县| 大城县| 新民市| 肥西县| 莆田市| 隆昌县| 都匀市| 江油市| 宁津县| 大埔县| 铁力市| 嘉兴市| 肃宁县| 彰化县| 靖州| 扶沟县| 专栏| 株洲县| 台东县| 阿尔山市| 康乐县|