TestNG配置註解實例
在TestNG中,我們可以使用以下注釋來執行測試類的配置,如設置/清理數據庫,準備虛擬數據,部署/關閉服務器等。
[@BeforeSuite](https://github.com/BeforeSuite "@BeforeSuite")
- 對於套件測試,在此套件中的所有測試運行之前運行。[](https://github.com/AfterSuite "@AfterSuite")[@AfterSuite](https://github.com/AfterSuite "@AfterSuite")
- 對於套件測試,在此套件中的所有測試運行之後運行。[](https://github.com/BeforeTest "@BeforeTest")[@BeforeTest](https://github.com/BeforeTest "@BeforeTest")
- 對於套件測試,在運行屬於<test>
標籤內的類的任何測試方法之前運行。[](https://github.com/AfterTest "@AfterTest")[@AfterTest](https://github.com/AfterTest "@AfterTest")
- 對於套件測試,在運行屬於<test>
標籤內的類的所有測試方法都已運行之後運行。[](https://github.com/BeforeGroups "@BeforeGroups")[@BeforeGroups](https://github.com/BeforeGroups "@BeforeGroups")
:在調用屬於該組的第一個測試方法之前運行。[](https://github.com/AfterGroups "@AfterGroups")[@AfterGroups](https://github.com/AfterGroups "@AfterGroups")
:在調用屬於組的最後一個測試方法之後運行。[](https://github.com/BeforeClass "@BeforeClass")[@BeforeClass](https://github.com/BeforeClass "@BeforeClass")
- 在當前類的第一個測試方法之前運行。[](https://github.com/AfterClass "@AfterClass")[@AfterClass](https://github.com/AfterClass "@AfterClass")
- 運行當前類中的所有測試方法之後都運行。[](https://github.com/BeforeMethod "@BeforeMethod")[@BeforeMethod](https://github.com/BeforeMethod "@BeforeMethod")
- 在每個測試方法之前運行。[@AfterMethod](https://github.com/AfterMethod "@AfterMethod")
- 在每個測試方法之後運行。
注: 套件測試是什麼東西? - 套件測試是一起運行的多個測試類。
查看以下示例以查看執行順序 - 首先調用哪個方法,接下來又是哪一個。
創建一個名稱爲:ConfigurationAnnotations
的 Maven 項目,其結構如下所示 -
1. 單測試類
運行單個測試用例,演示如何使用 group
, class
和 method
之前/之後。
創建文件:TestDBConnection.java ,其代碼如下所示 -
package com.yiibai;
import org.testng.annotations.Test;
public class TestDBConnection {
@Test
public void runOtherTest1() {
System.out.println("@Test - runOtherTest1");
}
@Test
public void runOtherTest2() {
System.out.println("@Test - runOtherTest2");
}
}
執行上面測試類,輸出結果如下 -
[TestNG] Running:
C:\Users\Administrator\AppData\Local\Temp\testng-eclipse-634199298\testng-customsuite.xml
@BeforeClass
@BeforeGroups
@BeforeMethod
@Test - runTest1
@AfterMethod
@AfterGroups
@BeforeMethod
@Test - runTest2
@AfterMethod
@AfterClass
PASSED: runTest1
PASSED: runTest2
===============================================
Default test
Tests run: 2, Failures: 0, Skips: 0
===============================================
===============================================
Default suite
Total tests run: 2, Failures: 0, Skips: 0
===============================================
[TestNG] Time taken by org.testng.reporters.XMLReporter@1b40d5f0: 14 ms
[TestNG] Time taken by org.testng.reporters.SuiteHTMLReporter@6ea6d14e: 50 ms
[TestNG] Time taken by org.testng.reporters.EmailableReporter2@4563e9ab: 6 ms
[TestNG] Time taken by [FailedReporter passed=0 failed=0 skipped=0]: 0 ms
[TestNG] Time taken by org.testng.reporters.jq.Main@2aaf7cc2: 42 ms
[TestNG] Time taken by org.testng.reporters.JUnitReportReporter@45c8e616: 3 ms
2. 套件測試類
再創建2
個測試類來演示如何使用之前/之後的套件和測試。
創建文件:DBConfig.java ,其代碼如下所示 -
package com.yiibai;
import org.testng.annotations.AfterSuite;
import org.testng.annotations.AfterTest;
import org.testng.annotations.BeforeSuite;
import org.testng.annotations.BeforeTest;
public class DBConfig {
@BeforeSuite()
public void beforeSuite() {
System.out.println("@BeforeSuite");
}
@AfterSuite()
public void afterSuite() {
System.out.println("@AfterSuite");
}
@BeforeTest()
public void beforeTest() {
System.out.println("@BeforeTest");
}
@AfterTest()
public void afterTest() {
System.out.println("@AfterTest");
}
}
創建文件:TestDBConnection.java ,其代碼如下所示 -
package com.yiibai;
import org.testng.annotations.Test;
public class TestDBConnection {
@Test
public void runOtherTest1() {
System.out.println("@Test - runOtherTest1");
}
@Test
public void runOtherTest2() {
System.out.println("@Test - runOtherTest2");
}
}
創建一個XML文件以一起運行多個測試用例。 閱讀XML的註釋,很容易就明白了。
創建文件:testng.xml ,其代碼如下所示 -
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" >
<!-- @BeforeSuite -->
<suite name="TestAll">
<!-- @BeforeTest -->
<test name="case1">
<classes>
<class name="com.yiibai.TestConfiguration" />
<class name="com.yiibai.TestDBConnection" />
<class name="com.yiibai.DBConfig" />
</classes>
</test>
<!-- @AfterTest -->
<!-- @BeforeTest -->
<test name="case2">
<classes>
<class name="com.yiibai.TestDBConnection" />
<class name="com.yiibai.DBConfig" />
</classes>
</test>
<!-- @AfterTest -->
</suite>
<!-- @AfterSuite -->
執行上面代碼,在文件:TestDBConnection.java 右鍵,在彈出的菜單項中選擇 「Run As 」 => Run Configures… ,如下圖所示 -
在新彈出框中輸入對應的 testng.xml 文件,如下所示 -
輸出結果如下 -
[TestNG] Running:
F:\worksp\testng\ConfigurationAnnotations\src\main\java\com\yiibai\testng.xml
@BeforeSuite
@BeforeTest
@BeforeClass
@BeforeGroups
@BeforeMethod
@Test - runTest1
@AfterMethod
@AfterGroups
@BeforeMethod
@Test - runTest2
@AfterMethod
@AfterClass
@Test - runOtherTest1
@Test - runOtherTest2
@AfterTest
@BeforeTest
@Test - runOtherTest1
@Test - runOtherTest2
@AfterTest
@AfterSuite
===============================================
TestAll
Total tests run: 6, Failures: 0, Skips: 0
===============================================