日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) >

TestNG 入门教程

發(fā)布時(shí)間:2024/10/12 66 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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"?>
????<classes>
???????<class?name="NoPackageTest"?/>
????</classes>
??</test>
?
??<test?name="Regression1">
????<classes>
??????<class?name="test.sample.ParameterSample"/>
??????<class?name="test.sample.ParameterTest"/>
????</classes>
??</test>
</suite>

你可以用包名替換類名,這樣TestNG 會(huì)查找test.sample 包中所有的類,并將只保留有TestNG注釋的類

<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" >
?
<suite?name="Suite1"?verbose="1"?>
??<test?name="Regression1"???>
????<packages>
??????<package?name="test.sample"?/>
???</packages>
?</test>
</suite>

你可以指定要包含和排除的組和方法:

<test?name="Regression1">
??<groups>
????<run>
??????<exclude?name="brokenTests"??/>
??????<include?name="checkinTests"??/>
????</run>
??</groups>
??
??<classes>
????<class?name="test.IndividualMethodsTest">
??????<methods>
????????<include?name="testMethod"?/>
??????</methods>
????</class>
??</classes>
</test>

你也可以在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">
??<classes>
?
????<class?name="test.Test1">
??????<methods>
????????<include?name="m1"?/>
????????<include?name="m2"?/>
??????</methods>
????</class>
?
????<class?name="test.Test2"?/>
?
??</classes>
</test>

有關(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ò),歡迎將生活随笔推薦給好友。