TestNG annotation

 

TestNG中用到的 annotation的快速預覽及其屬性。

 
@BeforeSuite: 被註釋的方法將在所有測試運行前運行
@AfterSuite:  被註釋的方法將在所有測試運行後運行
@BeforeTest:  被註釋的方法將在測試運行前運行
@AfterTest:   被註釋的方法將在測試運行後運行
 
@BeforeGroups: 被配置的方法將在列表中的gourp前運行。這個方法保證在第一個屬於這些組的測試方法調用前立即執行。
@AfterGroups:  被配置的方法將在列表中的 gourp後運行。這個方法保證在最後一個屬於這些組的測試方法調用後立即執行。
@BeforeClass:  被註釋的方法將在當前類的第一個測試方法調用前運行。
@AfterClass:   被註釋的方法將在當前類的所有測試方法調用後運行。
 
@BeforeMethod: 被註釋的方法將在每一個測試方法調用前運行。
@AfterMethod:  被註釋的方法將在每一個測試方法調用後運行。
 
 
屬性:
alwaysRun 
1.對於每個before方法(beforeSuite, beforeTest,beforeTestClass和beforeTestMethod, 但是不包括 beforeGroups):如果設置爲 true,被配置的方法將總是運行而不管它屬於哪個組。
2.對於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 方法
alwaysRun    如果設置爲 true,這個測試方法將總是運行,甚至當它依賴的方法失敗時。
dataProvider    這個測試方法的 data provider的名稱
dataProviderClass  用於查找 data provider的類。如果不指定,將在當前測試方法所在的類或者它的基類上查找 data provider。如果這個屬性被指定, 則 data provider方法需要是指定類的 static方法。
value   用於填充這個方法的參數的變量列表
 
dependsOnGroups    當前方法依賴的組列表
dependsOnMethods    當前方法依賴的方法列表
escription    當前方法的描述
enabled    當前類的方法/方法是否被激活
expectedExceptions    測試方法期望拋出的異常列表。如果沒有異常或者拋出的不是列表中的任何一個,當前方法都將標記爲失敗.
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 想的太周到了
 
groups    當前類/方法所屬的組列表
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章