生活随笔
收集整理的這篇文章主要介紹了
TestNG 入门教程
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
?
1 - 介紹
TestNG是一個(gè)測(cè)試框架,旨在簡(jiǎn)化廣泛的測(cè)試需求,從單元測(cè)試(測(cè)試一個(gè)孤立的類)到集成測(cè)試(測(cè)試包含幾個(gè)類,幾個(gè)包甚至幾個(gè)外部框架,如應(yīng)用服務(wù)器的系統(tǒng))。
?
編寫(xiě)測(cè)試通常是以下三步過(guò)程:
- 編寫(xiě)測(cè)試的業(yè)務(wù)邏輯,同時(shí)在代碼中插入TestNG的注釋。
- 在testng.xml文件或者build.xml中加入有關(guān)測(cè)試的信息(如類名,想要運(yùn)行的組,等...)。
- 運(yùn)行TestNG。
一個(gè)簡(jiǎn)單的例子
?package?example1;
| import?org.testng.annotations.*; public?class?SimpleTest { @BeforeClass public?void?setUp() { ?// code that will be invoked when this test is instantiated ? } @Test(groups= {?"fast"?}) public?void?aFastTest() { System.out.println("Fast test"); ? } ?@Test(groups = {?"slow"?}) | ?public?void?aSlowTest() { ?System.out.println("Slow test"); ? } } |
|
?
本文檔中使用的概念如下:
- suite由一個(gè)XML文件表示. 它可以包含一個(gè)或多個(gè)測(cè)試,由<suite>標(biāo)記定義。
- test由 <test>表示,可以包含一個(gè)或多個(gè)TestNG的類。
- TestNG類是包含至少一個(gè)TestNG注解的Java類。它是由標(biāo)簽表示,并且可以包含一個(gè)或多個(gè)測(cè)試方法。
- 測(cè)試方法是一個(gè)Java方法,通過(guò)注解@Test表示。
一個(gè)TestNG的測(cè)試可以通過(guò)配置@BeforeXXX和@AfterXXX注解,實(shí)現(xiàn)在一些點(diǎn)之前或之后執(zhí)行一些Java的邏輯,這些點(diǎn)可以是上面列出的任意一個(gè)點(diǎn)。
本教程的其余部分將解釋以下內(nèi)容:
- 所有注釋的列表及簡(jiǎn)介。
- testng.xml文件描述及語(yǔ)法。
- 各種功能的詳細(xì)列表,以及如何結(jié)合注釋和testng.xml使用。
?
2 - 注釋
下面是TestNG中提供的注釋及其屬性的概覽。
?
| @BeforeSuite? @AfterSuite? @BeforeTest? @AfterTest? @BeforeGroups? @AfterGroups? @BeforeClass? @AfterClass? @BeforeMethod? @AfterMethod | :TestNG類的配置信息? @BeforeSuite:在這個(gè)suite中的所有test運(yùn)行之前,運(yùn)行被注釋的方法。? @AfterSuite:在這個(gè)suite的所有test運(yùn)行之后,運(yùn)行被注釋的方法。? @BeforeTest:在標(biāo)簽類中的任何test方法運(yùn)行之前,運(yùn)行被注釋的方法。? @AfterTest:在標(biāo)簽類中的所有test方法運(yùn)行之后,運(yùn)行被注釋的方法。? @BeforeGroups:該配置方法將之前運(yùn)行組的列表。此方法保證在調(diào)用屬于這些組中的任何組的第一個(gè)測(cè)試方法之前不久運(yùn)行。? @AfterGroups:該配置方法將后運(yùn)行組的列表。此方法保證在調(diào)用屬于這些組中的任何組的最后一個(gè)測(cè)試方法后不久運(yùn)行。? @BeforeClass:被調(diào)用當(dāng)前類的第一個(gè)測(cè)試方法之前被注釋的方法將被運(yùn)行。? @AfterClass:后在當(dāng)前類中的所有測(cè)試方法已運(yùn)行被注釋的方法將被運(yùn)行。? @BeforeMethod:被注釋的方法將每個(gè)測(cè)試方法之前運(yùn)行。? @AfterMethod:被注釋的方法將每個(gè)測(cè)試方法之后運(yùn)行。 |
| ? | alwaysRun | 對(duì)于before方法(beforeSuite,beforeTest,beforeTestClass和beforeTestMethod,但不是beforeGroups):如果設(shè)置為true,此配置方法將運(yùn)行,而不管它屬于什么組。? 對(duì)于after方法(afterSuite,afterClass,...):如果設(shè)置為true,即使先前調(diào)用的一個(gè)或多個(gè)方法失敗或被跳過(guò),此配置方法也將運(yùn)行。 |
| ? | dependsOnGroups | 此方法所依賴的組列表。 |
| ? | dependsOnMethods | 此方法依賴的方法列表。 |
| ? | 啟用 | 是否啟用此類/方法的方法。 |
| ? | 組 | 此類/方法所屬的組列表。 |
| ? | inheritGroups | 如果為true,此方法將屬于在類級(jí)別的@Test注釋中指定的組。 |
| ? |
| @DataProvider | 將方法標(biāo)記為為測(cè)試方法提供數(shù)據(jù)。注釋的方法必須返回一個(gè)Object [] [],其中每個(gè)Object []可以分配測(cè)試方法的參數(shù)列表。想要從此DataProvider接收數(shù)據(jù)的@Test方法需要使用等于此注釋名稱的dataProvider名稱。 |
| ? | 名稱 | 此數(shù)據(jù)提供者的名稱。如果未提供,則此數(shù)據(jù)提供程序的名稱將自動(dòng)設(shè)置為方法的名稱。 |
| ? | 平行 | 如果設(shè)置為true,則使用此數(shù)據(jù)提供程序生成的測(cè)試并行運(yùn)行。默認(rèn)值為false。 |
| ? |
| @廠 | 將方法標(biāo)記為工廠,返回將由TestNG用作Test類的對(duì)象。該方法必須返回Object []。 |
| ? |
| @聽(tīng)眾 | 定義測(cè)試類上的偵聽(tīng)器。 |
| ? | 值 | 的擴(kuò)展類數(shù)組org.testng.ITestNGListener。 |
| ? |
| @Parameters | 描述如何將參數(shù)傳遞到@Test方法。 |
| ? | 值 | 用于填充此方法的參數(shù)的變量列表。 |
| ? |
| @測(cè)試 | 將類或方法標(biāo)記為測(cè)試的一部分。 |
| ? | alwaysRun | 如果設(shè)置為true,則此測(cè)試方法將始終運(yùn)行,即使它依賴于失敗的方法。 |
| ? | dataProvider | 此測(cè)試方法的數(shù)據(jù)提供者的名稱。 |
| ? | dataProviderClass | 類在哪里尋找數(shù)據(jù)提供者。如果未指定,數(shù)據(jù)提供程序?qū)⒉榭串?dāng)前測(cè)試方法的類或其基類之一。如果指定此屬性,則數(shù)據(jù)提供程序方法需要在指定類上為靜態(tài)。 |
| ? | dependsOnGroups | 此方法所依賴的組列表。 |
| ? | dependsOnMethods | 此方法依賴的方法列表。 |
| ? | 描述 | 此方法的說(shuō)明。 |
| ? | 啟用 | 是否啟用此類/方法的方法。 |
| ? | expectedExceptions | 預(yù)期拋出測(cè)試方法的異常列表。如果沒(méi)有異常或不同于此列表上的異常,此測(cè)試將被標(biāo)記為失敗。 |
| ? | 組 | 此類/方法所屬的組列表。 |
| ? | invocationCount | 應(yīng)調(diào)用此方法的次數(shù)。 |
| ? | invocationTimeOut | 該測(cè)試對(duì)所有調(diào)用計(jì)數(shù)的累積時(shí)間應(yīng)采用的最大毫秒數(shù)。如果未指定invocationCount,將忽略此屬性。 |
| ? | 優(yōu)先 | 此測(cè)試方法的優(yōu)先級(jí)。將首先安排較低的優(yōu)先級(jí)。 |
| ? | successPercentage | 預(yù)期從此方法成功的百分比 |
| ? | 單線程 | 如果設(shè)置為true,則此測(cè)試類上的所有方法都保證在同一線程中運(yùn)行,即使測(cè)試當(dāng)前正在使用parallel =“methods”運(yùn)行。此屬性只能在類級(jí)別使用,如果在方法級(jí)別使用,將被忽略。注意:使用被稱為這個(gè)屬性的順序(廢棄)。 |
| ? | 時(shí)間到 | 此測(cè)試應(yīng)采用的最大毫秒數(shù)。 |
| ? | threadPoolSize | 此方法的線程池大小。該方法將從invocationCount指定的多個(gè)線程中調(diào)用。 注意:如果未指定invocationCount,將忽略此屬性 |
?
3 - testng.xml
您可以通過(guò)幾種不同的方式調(diào)用TestNG:
- 通過(guò)testng.xml文件
- 從ant
- 從命令行
本節(jié)介紹testng.xml格式
下面是一個(gè)testng.xml文件例子:
?
| <!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" > |
| <suite?name="Suite1"?verbose="1"?> |
| ??<test?name="Nopackage"?> |
| ???????<class?name="NoPackageTest"?/> |
| ??<test?name="Regression1"> |
| ??????<class?name="test.sample.ParameterSample"/> |
| ??????<class?name="test.sample.ParameterTest"/> |
你可以用包名替換類名,這樣TestNG 會(huì)查找test.sample 包中所有的類,并將只保留有TestNG注釋的類
| <!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" > |
| <suite?name="Suite1"?verbose="1"?> |
| ??<test?name="Regression1"???> |
| ??????<package?name="test.sample"?/> |
你可以指定要包含和排除的組和方法:
| <test?name="Regression1"> |
| ??????<exclude?name="brokenTests"??/> |
| ??????<include?name="checkinTests"??/> |
| ????<class?name="test.IndividualMethodsTest"> |
| ????????<include?name="testMethod"?/> |
你也可以在testng.xml中定義新的組并指定屬性的詳細(xì)信息,如是否并行,使用多少線程,是否正在運(yùn)行JUnit測(cè)試,等等。?
默認(rèn)情況下,TestNG將按照XML文件順序運(yùn)行測(cè)試。如果你不想順序運(yùn)行這個(gè)文件中列出的類和方法,設(shè)置屬性preserve-order?為false
| <test?name="Regression1"?preserve-order="false"> |
| ????<class?name="test.Test1"> |
| ????????<include?name="m1"?/> |
| ????????<include?name="m2"?/> |
| ????<class?name="test.Test2"?/> |
有關(guān)功能的完整列表,請(qǐng)參閱DTD。(testng.xml文檔類型定義(dtd) http://testng.org/testng-1.0.dtd.php)
來(lái)源:http://testng.org/doc/documentation-main.html
轉(zhuǎn)載于:https://www.cnblogs.com/lisawu/p/6343573.html
總結(jié)
以上是生活随笔為你收集整理的TestNG 入门教程的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。