這裏提供下testng官方文檔鏈接,感興趣的小夥伴,可以直接點擊閱讀。
一、什麼是TestNG
TestNG是一個測試java應用程序的開源框架。目的在於簡化廣泛的測試需求,小到單元測試(單獨測試一個類),大到集成測試(測試由幾個類,幾個包甚至幾個外部框架組成的整個系統,如 應用服務器)。
編寫測試通常需要三個步驟:
- 第一步:編寫測試的業務邏輯並在代碼中插入TestNG註釋。
- 第二步:在testng.xml文件或build.xml中添加有關測試的信息(例如,類名,要運行的組等)。
- 第三步:Run TestNG.
下面介紹一些TestNG涉及到的名詞:
- suite(套件):套件由一個XML文件表示。 它可以包含一個或多個測試,由<suite>標籤定義。
- test(測試):測試由表示,可以包含一個或多個TestNG類。
- TestNG class(TestNG類):TestNG類是一個包含至少一個TestNG註釋的Java類。它由<class>標記表示,可以包含一個或多個測試方法。
- test method(測試方法):測試方法是測試代碼中由@Test註釋的Java方法。
二、註解總結
註解 (不帶@符號的是上面註解的屬性) |
描述 |
---|---|
@BeforeSuite | 被註釋的方法將在此套件中所有測試方法運行前執行 |
@AfterSuite | 被註釋的方法將在此套件中所有測試方法運行後執行 |
@BeforeTest | 被註釋的方法將在<test> 標籤內的class類包含的所有測試方法運行前執行 【這裏有些拗口,不理解的可以跳過,看後面的例子就懂了】 |
@AfterTest | 被註釋的方法將在<test> 標籤內的class類包含的所有測試方法運行後執行 |
@BeforeGroups | 被配置的方法將在列表中的gourp前運行。此方法是保證在運行屬於任何這些組第一個測試方法前,該方法被調用。 |
@AfterGroups | 被配置的方法將在列表中的gourp後運行。此方法是保證在運行屬於任何這些組最後一個測試方法後,該方法被調用。 |
@BeforeClass | 被註釋的方法將在當前類的第一個測試方法調用前執行 |
@AfterClass | 被註釋的方法將在當前類的所有測試方法運行後執行 |
@BeforeMethod | 在每個測試方法運行前執行 |
@AfterMethod | 在每個測試方法運行後執行 |
alwaysRun | 對於before方法(beforeSuite, beforeTest, beforeTestClass and beforeTestMethod, 但不包括beforeGroups):如果被設置爲true,被配置的方法不管屬於哪個組,都會被執行 對於after方法 (afterSuite, afterClass, …): 如果被設置爲true,即使先前調用的一個或多個方法執行失敗或跳過,被配置的方法依然執行 |
dependsOnGroups | 此方法依賴的組列表 |
dependsOnMethods | 此方法所依賴的方法列表。 |
enabled | 是否啓用此類/方法上的方法。 |
groups | 此類/方法所屬的組列表。 |
inheritGroups | 如果設置爲true,此方法將屬於類上指定@Test註解的組 |
onlyForGroups | 僅適用於@BeforeMethod和@AfterMethod。 如果指定,則僅當相應的測試方法屬於列出的組之一時,纔會調用此setup / teardown方法。 |
@DataProvider | 標記的方法爲測試方法提供數據。帶註釋的方法必須返回一個Object [] [],其中每個Object []都可以被賦值測試方法的參數列表。 若@Test方法想要從此DataProvider接收數據,那麼@Test方法的dataProvider名稱需要與此註解的名稱相同。 |
name | |
parallel | |
@Factory | 將方法標記爲工廠,返回將由TestNG用作Test類的對象。 該方法必須返回Object []。 |
@Listeners | 定義一個測試類的監聽器。 |
value | |
@Parameters | 描述如何將參數傳遞給@Test方法。 |
value | |
@Test | 標記一個類或方法作爲測試的一部分。 |
alwaysRun | |
dataProvider | |
dataProviderClass | |
dependsOnGroups | |
dependsOnMethods | |
description | |
enabled | |
expectedExceptions | |
groups | |
invocationCount | |
invocationTimeOut | |
priority | |
successPercentage | |
singleThreaded | |
timeOut | |
threadPoolSize |
三、簡單入門案例
下面使用testng框架,執行一個最最簡單的測試用例。
第一步:pom.xml添加依賴包
<dependency>
<groupId>org.testng</groupId>
<artifactId>testng</artifactId>
<version>6.1</version>
</dependency>
第二步:編寫測試class文件
import org.testng.annotations.Test;
public class BasicAnnotation {
//最基本的註解,用來把方法標記爲測試的一部分
@Test
public void testCase1(){
System.out.println("這是測試用例1");
}
}
第三步:點擊testCase1左側的綠色三角按鈕,運行測試方法