天天看點

TestNG官方文檔中文版(2)-annotation

TestNG的官方文檔的中文翻譯版第二章,原文請見 http://testng.org/doc/documentation-main.html

2 - Annotation

這裡是TestNG中用到的annotation的快速預覽,還有它們的屬性。

@BeforeSuite:        被注釋的方法将在所有測試運作前運作

@AfterSuite:        被注釋的方法将在所有測試運作後運作

@BeforeTest:        被注釋的方法将在測試運作前運作

@AfterTest:        被注釋的方法将在測試運作後運作

@BeforeGroups:        被配置的方法将在清單中的gourp前運作。這個方法保證在第一個屬于這些組的測試方法調用前立即執行。

@AfterGroups:        被配置的方法将在清單中的gourp後運作。這個方法保證在最後一個屬于這些組的測試方法調用後立即執行。

@BeforeClass:        被注釋的方法将在目前類的第一個測試方法調用前運作。

@AfterClass:        被注釋的方法将在目前類的所有測試方法調用後運作。

@BeforeMethod:        被注釋的方法将在每一個測試方法調用前運作。

@AfterMethod:        被注釋的方法将在每一個測試方法調用後運作。

屬性:

    alwaysRun    對于每個bufore方法(beforeSuite, beforeTest, beforeTestClass 和 beforeTestMethod, 但是不包括 beforeGroups): 

                如果設定為true,被配置的方法将總是運作而不管它屬于哪個組。

                對于after方法(afterSuite, afterClass, ...): 如果設定為true,被配置的方法甚至在一個或多個先調用的方法失敗或被忽略時也将運作。

    dependsOnGroups        這個方法依賴的組清單

    dependsOnMethods    這個方法依賴的方法清單

    enabled            這個類的方法是否激活

    groups            這個類或方法所屬的分組清單

    inheritGroups        如果設定為true,這個方法被屬于在類級别被@Test annotation指定的組

@DataProvider    标記一個方法用于為測試方法提供資料。

                被注釋的方法必須傳回Object[][], 其中每個Object[]可以指派為這個測試方法的參數清單。

                從這個DataProvider接收資料@Test方法需要使用一個和目前注釋相同名稱的dataProvider名稱

    name         這個DataProvider的名稱

@Factory    标記方法作為一個傳回對象的工廠,這些對象将被TestNG用于作為測試類。這個方法必須傳回Object[]

@Parameters    描述如何傳遞參數給@Test方法

    value    用于填充這個方法的參數的變量清單

@Test        标記一個類或方法作為測試的一部分

    alwaysRun     如果設定為true,這個測試方法将總是運作,甚至當它依賴的方法失敗時。

    dataProvider     這個測試方法的data provider的名稱

    dataProviderClass     用于查找data provider的類。

                    如果不指定,将在目前測試方法所在的類或者它的基類上查找data provider。

                    如果這個屬性被指定, 則data provider方法需要是指定類的static方法。

    dependsOnGroups     目前方法依賴的組清單

    dependsOnMethods     目前方法依賴的方法清單

    description     目前方法的描述

    enabled     目前類的方法/方法是否被激活

    expectedExceptions     測試方法期望抛出的異常清單。如果沒有異常或者抛出的不是清單中的任何一個,目前方法都将标記為失敗.

    groups     目前類/方法所屬的組清單

    invocationCount     目前方法被調用的次數

    successPercentage     目前方法期望的成功率

    sequential     如果設定為true,目前測試類上的所有方法保證按照順序運作。甚至測試們在parallel="true"的情況下.

            這個屬性隻能用于類級别,如果用于方法級别将被忽略。

    timeOut     目前方法容許花費的最大時間,機關毫秒。

    threadPoolSize     目前方法的線程池大小。方法将被多線程調用,次數由invocationCount參數指定

            注意:如果invocationCount沒有指定則這個屬性将被忽略

注:

    上面是TestNG中用到的annotation清單,從中我們可以看到TestNG提供的一些特性

1. before方法和after方法    帶來了足夠豐富的測試生命周期控制

2. dependsOnGroups/dependsOnMethods 提供了依賴檢查機制,并可以嚴格控制執行順序

3. DataProvider 使得對同一個方法的測試覆寫變的非常輕松,非常适合進行邊界測試,隻要給出多種測試資料就可以針對一個測試方法進行覆寫

4. expectedExceptions 使得異常測試變的非常輕松

5. invocationCount/threadPoolSize 終于可以簡單的直接進行多線程測試了,這個絕對是junit的超級弱項,回想junit中那個萬惡的System.exist(0)...

6. timeOut 終于不用死等然後手工強行關閉測試,TestNG想的太周到了

via:http://www.blogjava.net/aoxj/