TestNG

TestNG簡介.?

1.TestNG是一個設計用來簡化廣泛的測試需求的測試框架,從單元測試到集成測試 ??? 這個是TestNG設計的出發(fā)點,不僅僅是單元測試,而且可以用于集成測試。設計目標的不同,對比junit的只適合用于單元測試,TestNG無疑走的更遠。 ??? 可以用于集成測試,這個特性是我選擇TestNG的最重要的原因。

2. 測試的過程的三個典型步驟,注意和junit(4.0)相比,多了一個將測試信息添加到testng.xml文件或者build.xml ??? 測試信息尤其是測試數(shù)據(jù)不再寫死在測試代碼中,好處就是修改測試數(shù)據(jù)時不需要修改代碼/編譯了,從而有助于將測試人員引入單元測試/集成測試。

3. 基本概念,相比junit的TestCase/TestSuite,TestNG有suite/test/test method三個級別,即將test/test method明確區(qū)分開了。 ??? junit中的TestCase將test/test method混合,比較容易讓人概念不清晰,尤其是新手。

Annotation

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

@BeforeSuite:??????? 被注釋的方法將在所有測試運行前運行

@AfterSuite:??????? 被注釋的方法將在所有測試運行后運行

@BeforeTest:??????? 被注釋的方法將在測試運行前運行

@AfterTest:??????? 被注釋的方法將在測試運行后運行

@BeforeGroups:??????? 被配置的方法將在列表中的gourp前運行。這個方法保證在第一個屬于這些組的測試方法調(diào)用前立即執(zhí)行。

@AfterGroups:??????? 被配置的方法將在列表中的gourp后運行。這個方法保證在最后一個屬于這些組的測試方法調(diào)用后立即執(zhí)行。

@BeforeClass:??????? 被注釋的方法將在當前類的第一個測試方法調(diào)用前運行。

@AfterClass:??????? 被注釋的方法將在當前類的所有測試方法調(diào)用后運行。

@BeforeMethod:??????? 被注釋的方法將在每一個測試方法調(diào)用前運行。

@AfterMethod:??????? 被注釋的方法將在每一個測試方法調(diào)用后運行。

@DataProvider??? 標記一個方法用于為測試方法提供數(shù)據(jù)。

被注釋的方法必須返回Object[][], 其中每個Object[]可以指派為這個測試方法的參數(shù)列表。

從這個DataProvider接收數(shù)據(jù)@Test方法需要使用一個和當前注釋相同名稱的dataProvider名稱

name???????? 這個DataProvider的名稱

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

@Parameters??? 描述如何傳遞參數(shù)給@Test方法

value??? 用于填充這個方法的參數(shù)的變量列表

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

alwaysRun???? 如果設置為true,這個測試方法將總是運行,甚至當它依賴的方法失敗時。

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

dataProviderClass???? 用于查找data provider的類。

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

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

dependsOnGroups???? 當前方法依賴的組列表

dependsOnMethods???? 當前方法依賴的方法列表

description???? 當前方法的描述

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

expectedExceptions???? 測試方法期望拋出的異常列表。如果沒有異?;蛘邟伋龅牟皇橇斜碇械娜魏我粋€,當前方法都將標記為失敗.

groups???? 當前類/方法所屬的組列表

invocationCount???? 當前方法被調(diào)用的次數(shù)

successPercentage???? 當前方法期望的成功率

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

這個屬性只能用于類級別,如果用于方法級別將被忽略。

timeOut???? 當前方法容許花費的最大時間,單位毫秒。

threadPoolSize???? 當前方法的線程池大小。方法將被多線程調(diào)用,次數(shù)由invocationCount參數(shù)指定

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

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

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

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

3. DataProvider 使得對同一個方法的測試覆蓋變的非常輕松,非常適合進行邊界測試,只要給出多種測試數(shù)據(jù)就可以針對一個測試方法進行覆蓋

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

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

6. timeOut 終于不用死等然后手工強行關(guān)閉測試,TestNG想的太周到了

?調(diào)用TestNG由幾種不同方法:

* 使用testng.xml文件

* 使用ant

* 從命令行

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關(guān)閱讀更多精彩內(nèi)容

  • 感謝原作者的奉獻,原作者博客地址:http://blog.csdn.net/zhu_ai_xin_520/arti...
    狼孩閱讀 14,300評論 1 35
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,544評論 19 139
  • 本文章轉(zhuǎn)載于搜狗測試 TestNG介紹 TestNG意為test next generation,是Java中的一...
    夜境閱讀 2,169評論 0 1
  • JUnit 4和TestNG都是Java中非常受歡迎的單元測試框架。兩種框架在功能上看起來非常相似。 哪一個更好?...
    易百教程閱讀 5,056評論 2 6
  • 關(guān)于這本書的推薦看到了很多,最近又看到升騰的信徒寫的一篇文章,對這本書進行了相關(guān)的批判性思考。手頭剛好有,詳細地閱...
    長風如意閱讀 335評論 3 4

友情鏈接更多精彩內(nèi)容