<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    posts - 32,comments - 75,trackbacks - 0

    3.         TestNG 的靈魂

    配置文件(testng.xml

    Junit中要定義測試任務是要寫TestSuit的,居然要寫硬編碼,而TestNG全部寫在testng.xml(名字可以自定義的)中的,然后可以通過ant來調用。

    <!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" >

    <suite name="my suite">

    <test name="test1">

           <groups>

           <run name="group1">

           </run>

           </groups>

    <classes>

    <class name="ClassA"  />

    </classes>

    </test>

    <test name="test2"  >

           <groups>

           <run name="group2">

           </run>

           </groups>

    <classes>

    <class name="ClassB"/>

    <class name="ClassC"/>

    </classes>

    </test>

    </suite>

    上面包含了配置文件的基本的主干,一個配置文件只有一個Suite,基本上一個項目寫一個配置文件就可以了,當然如果你的項目足夠大,可能需要幾個配置文件。測試是按照從大到小的順序進行的,先執行suitetestclass,其中的groupclass是平級的,在講group的時候再詳細的解釋。有了這個文件,我們就可以很清楚的理解@configuration里面的類型

    public boolean beforeSuite() default false;

    public boolean afterSuite() default false;

     

    public boolean beforeTest() default false;

    public boolean afterTest() default false;

     

    public boolean beforeTestClass() default false;

    public boolean afterTestClass() default false;

     

    public boolean beforeTestMethod() default false;

    public boolean afterTestMethod() default false;

    從字面意思可以看出方法的執行順序,唯一的疑惑是執行的次數,官方的文檔的解釋是相當讓人疑惑的,好在我們可以自己測試,beforeTestMethod是當類中任何方法調用都要執行的,beforeTestbeforeTestClass在一個Test中是只執行一次的(沒試過把2個相同的類寫到一個Test里面),而beforeSuite在一個配置文件中只執行一次。上面都沒有考慮分組的情況,分組會更加的復雜,似乎靈活過頭了,但是考慮到項目的復雜性,每個測試方法的初始化都可能不同,現在我們做的項目要求每天要將單元測試寫進daily buildbuild文件里面自動執行,似乎只有用TestNG這樣靈活的配置才能達到。

     

    4.         分組

    將一個測試方法或者配置方法分組是很容易的。

    @Configuration(beforeTestClass=truegroups=“group1)

    @Test(groups=”group1”)

    只要象上面寫就可以了,名字隨便取,而且不需要預先定義。

    我們在一個類做2個組,看看效果

    @Configuration(beforeTestClass=truegroups=“group1)

    Public void C1(){}

    @Test(groups=”group1”)

    Public void T1(){}

    @Configuration(beforeTestClass=truegroups=“group2)

    Public void C2(){}

    @Test(groups=”group2”)

    Public void T2(){}

    只選group1

    …………………

           <groups>

           <run name="group1">

           </run>

           </groups>

    …………

           執行C1        T1

     

    只選group2

    …………………

           <groups>

           <run name="group2">

           </run>

           </groups>

    …………

    執行C2        T2

     

    2個都選

    …………………

           <groups>

    <run name="group1">

           <run name="group2">

           </run>

           </groups>

    …………

    我最先以為的順序是C1        T1       C2        T2  A

    然而實際上是  C1        C2        T1        C1        C2        T2 B

    要想達到(A)的效果,只能把2group分開了放在不同的Test里面,其實只要知道一點,TestNG是先找Class,然后才去找Group的。

    posted on 2005-12-14 14:25 fanta 閱讀(1641) 評論(1)  編輯  收藏 所屬分類: Java

    FeedBack:
    # re: TestNG 與 Junit的比較(二)
    2005-12-15 09:15 | esmiles
    繼續觀注.原來對TestNG并沒有在意.  回復  更多評論
      
    主站蜘蛛池模板: 亚洲精品乱码久久久久久蜜桃不卡 | 337p日本欧洲亚洲大胆裸体艺术| 国产免费看插插插视频| 又黄又爽的视频免费看| 亚洲另类少妇17p| 亚洲人成网站在线观看播放| 亚洲福利在线观看| 亚洲精品福利你懂| 久久国产一片免费观看| 久久国产精品免费网站| 男女免费观看在线爽爽爽视频| 中文字幕乱码免费视频| 亚洲国产精品毛片av不卡在线| 久久青草亚洲AV无码麻豆| 亚洲女子高潮不断爆白浆| 国产精品美女久久久免费| 噼里啪啦电影在线观看免费高清| 国产成人免费手机在线观看视频 | 亚洲啪AV永久无码精品放毛片| 国产成人精品亚洲一区| 中国xxxxx高清免费看视频| 一区二区三区亚洲视频| 亚洲第一成人在线| 国产亚洲精品免费视频播放| 午夜电影免费观看| 亚洲系列中文字幕| 久久久国产精品福利免费| 婷婷亚洲天堂影院| 亚洲av无码专区首页| 一个人免费观看www视频在线| 亚洲成年轻人电影网站www | 亚洲熟妇无码乱子AV电影 | 亚洲欧洲自拍拍偷午夜色| 一级女人18片毛片免费视频| 国产片免费在线观看| 亚洲欧美日韩一区二区三区| 四虎永久在线观看免费网站网址| 97亚洲熟妇自偷自拍另类图片| 全黄大全大色全免费大片| 亚洲日韩精品一区二区三区无码 | 亚洲另类图片另类电影|