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

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

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

    Sky's blog

    我和我追逐的夢

    常用鏈接

    統(tǒng)計

    其他鏈接

    友情鏈接

    最新評論

    TestNG官方文檔中文版(7)-方法依賴和工廠

    5.6 - Dependent methods

    有些時候,你需要你的測試方法按照一個特定的順序被調(diào)用。這非常有用,比如:
        * 在運(yùn)行更多測試方法前確認(rèn)特定數(shù)量的測試方法調(diào)用完成并且成功
        * 初始化測試并希望這個初始化方法也作為測試方法(被標(biāo)記為@Before/After的方法將不作為最終報告的一部分)

    為了做到這點,需要使用@Test注解的dependsOnMethods屬性或者dependsOnGroups屬性。
    有兩種依賴:
        * 強(qiáng)依賴。在運(yùn)行你的測試方法前所有依賴方法必須運(yùn)行并且成功。哪怕有一個依賴方法失敗,測試方法都不會被調(diào)用,在報告中將被標(biāo)記為SKIP。
        * 軟依賴。測試方法在依賴方法運(yùn)行后總是會被運(yùn)行,即使某些依賴方法失敗。對于只想確認(rèn)測試方法是按照特定順序運(yùn)行,而測試方法并不真正依賴其他方法是否成功的情況,非常有用。軟依賴通過在@Test注解中增加"alwaysRun=true"來實現(xiàn)。

    這里有一個強(qiáng)依賴的例子:

    @Test
    public void serverStartedOk() {}

    @Test(dependsOnMethods 
    = { "serverStartedOk" })
    public void method1() {}


    在這個例子中,method1()被申明依賴于方法serverStartedOk(),這保證serverStartedOk() 方法將總是首先被調(diào)用。
    也可以讓方法依賴于完整的測試組:

    @Test(groups = { "init" })
    public void serverStartedOk() {}

    @Test(groups 
    = { "init" })
    public void initEnvironment() {}

    @Test(dependsOnGroups 
    = { "init.* })
    public void method1() {}


    在這里例子中,method1()被申明依賴于任何匹配正則表達(dá)式"init.*"的組,這保證了方法serverStartedOk()和initEnvironment()總是在method1()前被調(diào)用。

    注意:前面說明說,在測試運(yùn)行期間,屬于同一個組的方法的調(diào)用順序并不保證相同。如果一個方法的依賴失敗了,而且是強(qiáng)依賴(默認(rèn)alwaysRun=false),這個方法將不被標(biāo)記為FAIL而是SKIP。被跳過的方法在最終的報告中報告(在HTML中用紅和綠之外的其他顏色),這很重要,因為被跳過的方法并不一定是失敗。

    dependsOnGroups和dependsOnMethods都接受正則表達(dá)式作為參數(shù)。對于dependsOnMethods, 如果你依賴的方法巧合有多個重載的版本,所有裝載的方法都將被調(diào)用。如果你只想調(diào)用重載的方法中的一個,請使用dependsOnGroups。

    有關(guān)方法依賴的更高級的例子,請參考本文檔,將使用繼承來提供一個優(yōu)雅的解決方案來處理多重依賴的問題。

    5.7 - Factories

    工廠類容許你動態(tài)創(chuàng)建測試案例。例如,想象你需要創(chuàng)建一個測試方法,訪問一個web站點上的頁面很多次,而你希望用不同的值來調(diào)用它:


    public class TestWebServer {
      @Test(parameters 
    = { "number-of-times" })
      
    public void accessPage(int numberOfTimes) {
        
    while (numberOfTimes-- > 0) {
         
    // access the web page
        }
      }
    }

    testng.xml:

    <test name="T1">
      
    <parameter name="number-of-times" value="10"/>
      
    <class name= "TestWebServer" />
    </test>

    <test name="T2">
      
    <parameter name="number-of-times" value="20"/>
      
    <class name= "TestWebServer"/>
    </test>

    <test name="T3">
      
    <parameter name="number-of-times" value="30"/>
      
    <class name= "TestWebServer"/>
    </test>

    這種方式很快就會變的難于管理,所以作為替換品,你可以使用factory:


    public class WebTestFactory {
      @Factory
      
    public Object[] createInstances() {
       Object[] result 
    = new Object[10]; 
       
    for (int i = 0; i < 10; i++) {
          result[i] 
    = new WebTest(i * 10);
        
    return result;
      }
    }


    而新的測試類是這樣:

    public class WebTest {
      
    private int m_numberOfTimes;
      
    public WebTest(int numberOfTimes) {
        m_numberOfTimes 
    = numberOfTimes;
      }

      @Test
      
    public void testServer() {
       
    for (int i = 0; i < m_numberOfTimes; i++) {
         
    // access the web page
        }
      }
    }


    testng.xml只需要引用簡單引用這個包含factory方法的類,因為測試實例將在運(yùn)行時被創(chuàng)建。

    <class name="WebTestFactory" />

    工廠類將像@Test和@Before/After一樣接收參數(shù),必須返回Object[]。返回的對象可以是任何類(不一定要求是和factory類一樣),并且他們甚至都不需要包含TestNG的注解(這種情況下他們將被testNG忽略)。


    posted on 2008-09-02 18:14 sky ao 閱讀(2284) 評論(1)  編輯  收藏 所屬分類: software test

    評論

    # re: TestNG官方文檔中文版(7)-方法依賴和工廠 2008-09-02 20:18 試客網(wǎng)

    叫好,喜歡~贊一個  回復(fù)  更多評論   

    主站蜘蛛池模板: 综合偷自拍亚洲乱中文字幕| 666精品国产精品亚洲 | 99国产精品免费视频观看| 久久久久亚洲AV无码专区桃色| 成人a毛片视频免费看| 亚洲七七久久精品中文国产| 特黄特色的大片观看免费视频| 亚洲精品无码99在线观看| 五月天婷婷免费视频| 国产亚洲精品va在线| 免费不卡在线观看AV| 亚洲日韩乱码久久久久久| 最新欧洲大片免费在线| 亚洲午夜精品一区二区麻豆| 国产精品jizz在线观看免费 | 4hu四虎免费影院www| 亚洲人成电影福利在线播放| 91人人区免费区人人| 亚洲大码熟女在线观看| 国产一级淫片视频免费看| 精品国产污污免费网站入口在线| 亚洲AV综合色区无码一区爱AV| 99re在线这里只有精品免费| 亚洲 暴爽 AV人人爽日日碰| 亚洲av片一区二区三区| 无码囯产精品一区二区免费| 最新国产成人亚洲精品影院| 免费在线不卡视频| 亚洲一区免费观看| 男人的天堂av亚洲一区2区| 亚洲综合AV在线在线播放| 免费成人激情视频| 午夜亚洲国产精品福利| 亚洲av无码国产精品夜色午夜| 青草草色A免费观看在线| 中美日韩在线网免费毛片视频| 亚洲福利视频一区| 四虎永久免费影院| 91制片厂制作传媒免费版樱花| 日韩色日韩视频亚洲网站| 久久精品国产亚洲AV无码娇色|