qileilove

          blog已經轉移至github,大家請訪問 http://qaseven.github.io/

          JUnit和TestNG的區別

          網上看了一篇英文帖子,講解JUnitTestNG框架的區別,挺好的,我這里翻譯下。
            1.對于注解類的支持
            2.測試參數化
            對于TestNG和JUnit都有不同的參數化設定功能,可是表現形式不同。參數化設定意味著當運行測試的時候,參數可以從外部傳入到這個測試單元中。
            對于TestNG來說,要2部分,一是當構造測試代碼時候,要用@Parameters(value=XXX)來表示這個測試需要什么參數,這樣的優點是可以讓測試更加靈活并且可以根據不同的參數來得到不同的期望結果,比如:
          public class TestNGTest6_1_0 {
          @Test
          @Parameters(value="number")
          public void parameterIntTest(int number) {
          System.out.println("Parameterized Number is : " + number);
          }
          }
            然后,在我們的XML文件中,我們把參數的具體值設置進來,如下:
          <!DOCTYPE suite SYSTEM "http://beust.com/testng/testng-1.0.dtd" >
          <suite name="My test suite">
          <test name="testing">
          <parameter name="number" value="2"/>
          <classes>
          <class name="com.fsecure.demo.testng.TestNGTest6_0" />
          </classes>
          </test>
          </suite>
            那么,如果我們要給的參數比較復雜,我們無法用一個簡單的String或者 原子類型在XML文件”推“給測試方法,那么怎么辦呢?這時候,我們就要用”拉“模型了,我們用一個DataProvider屬性來給被測試的方法上聲明它需要的數據,然后平行的,用@DataProvider注解來標注一個方法,讓這個方法的返回值返回具體的數據,這樣我們2個拼接下就完美了。
            比如說:下面代碼聲明我們的測試類需要一個DataProvider:
          @Test(dataProvider = "Data-Provider-Function")
          public void parameterIntTest(TestNGTest6_3_0 clzz) {
          System.out.println("Parameterized Number is : " + clzz.getMsg());
          System.out.println("Parameterized Number is : " + clzz.getNumber());
          }
           然后相應的我們用@DataProvider來標注一個方法,這個方法提供了數據:
          //This function will provide the patameter data
          @DataProvider(name = "Data-Provider-Function")
          public Object[][] parameterIntTestProvider() {
          TestNGTest6_3_0 obj = new TestNGTest6_3_0();
          obj.setMsg("Hello");
          obj.setNumber(123);
          return new Object[][]{
          {obj}
          };
          }
            3.測試依賴性:
            對于JUnit 來說,所有的測試彼此之間都是獨立的,毫無依賴性。
            但是對于 TestNG來說,我們完全可以讓測試彼此之間有依賴性,做法就是dependsOnMethods屬性來標識一個被依賴的測試方法:
          @Test
          public void method1() {
          System.out.println("This is method 1");
          }
          @Test(dependsOnMethods={"method1"})
          public void method2() {
          System.out.println("This is method 2");
          }

          posted on 2014-08-19 13:26 順其自然EVO 閱讀(287) 評論(0)  編輯  收藏 所屬分類: 測試學習專欄

          <2014年8月>
          272829303112
          3456789
          10111213141516
          17181920212223
          24252627282930
          31123456

          導航

          統計

          常用鏈接

          留言簿(55)

          隨筆分類

          隨筆檔案

          文章分類

          文章檔案

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 江源县| 连江县| 赣州市| 方正县| 莱州市| 隆昌县| 宜兴市| 勐海县| 木里| 始兴县| 清镇市| 城固县| 永年县| 巴彦淖尔市| 大足县| 南昌县| 阿拉善右旗| 金塔县| 兴业县| 珠海市| 龙南县| 华池县| 林州市| 平谷区| 马山县| 阿尔山市| 射洪县| 恭城| 聂荣县| 浙江省| 花垣县| 常宁市| 凤山市| 南安市| 嘉禾县| 文昌市| 巧家县| 贡觉县| 邻水| 罗山县| 桂林市|