測試套件是用於測試軟體程式的行為或一組行為的測試用例的集合。 在TestNG中,我們無法在測試原始碼中定義一個套件,但它可以由一個XML檔案表示,因為套件是執行的功能。 它還允許靈活組態要執行的測試。 套件可以包含一個或多個測試,並由<suite>
標記定義。
<suite>
是testng.xml
的根標記。 它描述了一個測試套件,它又由幾個<test>
部分組成。
下表列出了<suite>
接受的所有定義的合法屬性。
屬性 | 描述 |
---|---|
name | 套件的名稱,這是一個強制屬性。 |
verbose | 執行的級別或詳細程度。 |
parallel | TestNG是否執行不同的執行緒來執行這個套件。 |
thread-count | 如果啟用並行模式(忽略其他方式),則要使用的執行緒數。 |
annotations | 在測試中使用的注釋型別。 |
time-out | 在本測試中的所有測試方法上使用的預設超時。 |
在本教學中,我們將向您展示如何一起執行多個TestNG測試用例(類),也稱為套件測試。
建立一個名稱為:SuiteTest 的專案,其結構如下所示 -
我們來看看以下三個測試類。
建立一個檔案:TestConfig.java
,其程式碼如下所示 -
package com.yiibai;
import org.testng.annotations.AfterSuite;
import org.testng.annotations.AfterTest;
import org.testng.annotations.BeforeSuite;
import org.testng.annotations.BeforeTest;
//show the use of @BeforeSuite and @BeforeTest
public class TestConfig {
@BeforeSuite
public void testBeforeSuite() {
System.out.println("testBeforeSuite()");
}
@AfterSuite
public void testAfterSuite() {
System.out.println("testAfterSuite()");
}
@BeforeTest
public void testBeforeTest() {
System.out.println("testBeforeTest()");
}
@AfterTest
public void testAfterTest() {
System.out.println("testAfterTest()");
}
}
建立一個檔案:TestDatabase.java
,其程式碼如下所示 -
package com.yiibai;
import org.testng.annotations.Test;
public class TestDatabase {
@Test(groups = "db")
public void testConnectOracle() {
System.out.println("testConnectOracle()");
}
@Test(groups = "db")
public void testConnectMsSQL() {
System.out.println("testConnectMsSQL");
}
@Test(groups = "db-nosql")
public void testConnectMongoDB() {
System.out.println("testConnectMongoDB");
}
@Test(groups = { "db", "brokenTests" })
public void testConnectMySQL() {
System.out.println("testConnectMySQL");
}
}
建立一個檔案:TestOrder.java
,其程式碼如下所示 -
package com.yiibai;
import org.testng.annotations.Test;
public class TestOrder {
@Test(groups={"orderBo", "save"})
public void testMakeOrder() {
System.out.println("testMakeOrder");
}
@Test(groups={"orderBo", "save"})
public void testMakeEmptyOrder() {
System.out.println("testMakeEmptyOrder");
}
@Test(groups="orderBo")
public void testUpdateOrder() {
System.out.println("testUpdateOrder");
}
@Test(groups="orderBo")
public void testFindOrder() {
System.out.println("testFindOrder");
}
}
要執行上面的測試類,建立一個XML檔案 - testng.xml
(可以是任何檔案名)檔案,並定義以下內容細節:
<?xml version="1.0" encoding="UTF-8"?>
<suite name="TestAll">
<test name="order">
<classes>
<class name="com.yiibai.TestConfig" />
<class name="com.yiibai.TestOrder" />
</classes>
</test>
<test name="database">
<classes>
<class name="com.yiibai.TestConfig" />
<class name="com.yiibai.TestDatabase" />
</classes>
</test>
</suite>
執行上面程式碼,得到如下結果 -
[TestNG] Running:
F:\worksp\testng\SuiteTest\src\main\java\com\yiibai\testng.xml
testBeforeSuite()
testBeforeTest()
testFindOrder
testMakeEmptyOrder
testMakeOrder
testUpdateOrder
testAfterTest()
testBeforeTest()
testConnectMongoDB
testConnectMsSQL
testConnectMySQL
testConnectOracle()
testAfterTest()
testAfterSuite()
===============================================
TestAll
Total tests run: 8, Failures: 0, Skips: 0
===============================================
這裡有一些常用的例子。
3.1. 指定包名稱而不是類名稱:
建立一個XML檔案:testng-1.xml
,其程式碼如下所示 -
<suite name="TestAll">
<test name="order">
<packages>
<package name="com.yiibai.*" />
</packages>
</test>
</suite>
3.2. 指定包含或排除的方法,修改上面XML檔案:testng-1.xml
,其程式碼如下所示 -
<?xml version="1.0" encoding="UTF-8"?>
<suite name="TestAll">
<test name="order">
<classes>
<class name="com.yiibai.TestConfig" />
<class name="com.yiibai.TestOrder">
<methods>
<include name="testMakeOrder" />
<include name="testUpdateOrder" />
<!--
<exclude name="testMakeOrder" />
-->
</methods>
</class>
</classes>
</test>
</suite>
使用以上xml檔案執行測試,得到以下結果 -
[TestNG] Running:
F:\worksp\testng\SuiteTest\src\main\java\com\yiibai\testng-1.xml
testBeforeSuite()
testBeforeTest()
testMakeOrder
testUpdateOrder
testAfterTest()
testAfterSuite()
===============================================
TestAll
Total tests run: 2, Failures: 0, Skips: 0
===============================================
3.3. 指定要包括或排除某個分組,建立一個XML檔案:testng-2.xml
,其程式碼如下所示 -
<?xml version="1.0" encoding="UTF-8"?>
<suite name="TestAll">
<test name="database">
<groups>
<run>
<exclude name="brokenTests" />
<include name="db" />
</run>
</groups>
<classes>
<class name="com.yiibai.TestDatabase" />
</classes>
</test>
</suite>
使用以上xml檔案執行測試,得到以下結果 -
[TestNG] Running:
F:\worksp\testng\SuiteTest\src\main\java\com\yiibai\testng-2.xml
testConnectMsSQL
testConnectOracle()
===============================================
TestAll
Total tests run: 2, Failures: 0, Skips: 0
===============================================