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,這個方法被屬於在類級別被@Testannotation 指定的組
DataProvider 標記一個方法用於爲測試方法提供數據。
被註釋的方法必須返回Object[][], 其中每個Object[]可以指派爲這個測試方法的參數列表。
這個DataProvider接收數據@Test方法需要使用一個和當前註釋相同名稱的 dataProvider名稱
name這個 DataProvider的名稱
@Factory 標記方法作爲一個返回對象的工廠,這些對象將被TestNG用於作爲測試類。這個方法必須返回 Object[]
@Parameters 描述如何傳遞參數給
@Test方法
alwaysRun 如果設置爲true,這個測試方法將總是運行,甚至當它依賴的方法失敗時。
dataProvider 這個測試方法的data provider的名稱
dataProviderClass 用於查找data provider的類。如果不指定,將在當前測試方法所在的類或者它的基類上查找 dataprovider。如果這個屬性被指定, 則 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 當前類/方法所屬的組列表
本文轉載自http://blog.sina.com.cn/bestfeiyong