- TestNG 教程
- TestNG - 首頁
- TestNG - 概述
- TestNG - 環境
- TestNG -編寫測試
- TestNG - 基本註解
- TestNG - 執行過程
- TestNG - 執行測試
- TestNG - 套件測試
- TestNG - 忽略測試
- TestNG - 組測試
- TestNG - 異常測試
- TestNG - 依賴測試
- TestNG - 引數化測試
- TestNG - 執行JUnit測試
- TestNG - 測試結果
- TestNG - 註解轉換器
- TestNG - 斷言
- TestNG - 並行執行
- TestNG - 與ANT整合
- TestNG - 與Eclipse整合
- TestNG - TestNG vs JUnit
- TestNG 有用資源
- TestNG - 快速指南
- TestNG - 有用資源
- TestNG - 討論
TestNG - 基本註解 - 監聽器
@Listeners 註解定義了測試類上的監聽器。@Listeners 註解的方法監聽某些事件,並在測試執行的每個階段執行某些操作的同時跟蹤測試執行情況。事件可以是任何內容,例如測試方法的成功、測試方法的失敗、測試方法的開始等。
以下是一些允許您修改 TestNG 行為的監聽器或介面
IAnnotationTransformer
IAnnotationTransformer2
IHookable
IInvokedMethodListener
IMethodInterceptor
IReporter
ISuiteListener
ITestListener
@Listeners 可以實現於 *類級別* 和 *套件級別*
以下是 @Listeners 註解支援的屬性列表
| 屬性 | 描述 |
|---|---|
value |
擴充套件 org.testng.ITestNGListener 的類的陣列 |
建立測試用例類
讓我們看看如何使用 TestNG 監聽器呼叫測試方法。
建立一個 Java 測試類,例如,在 /work/testng/src 中建立 SimpleTestClass.java。
向您的測試類新增測試方法 sum() 和 testtofail()。
向 sum() 和 testtofail() 方法添加註解 @Test。
以下是 SimpleTestClass.java 的內容
import org.testng.Assert;
import org.testng.annotations.Test;
public class SimpleTestClass {
@Test
public void sum()
{
int sum=0;
int a=15;
int b=27;
sum=a+b;
System.out.println("sum="+sum);
}
@Test
public void testtofail()
{
System.out.println("Test case has failed");
Assert.assertTrue(false);
}
}
建立監聽器測試類
建立一個另一個 Java 類,例如,在 /work/testng/src 中建立 TestListener.java。我們將實現 ITestListener。
ITestListener 包含以下方法
onTestStart - 當任何測試開始時呼叫 onTestStart 方法。
onTestSuccess - 當任何測試成功時呼叫 onTestSuccess 方法。
onTestFailure - 當任何測試失敗時呼叫 onTestFailure 方法。
onTestSkipped - 當任何測試被跳過時呼叫 onTestSkipped 方法。
onTestFailedButWithinSuccessPercentage - 每次測試失敗但在成功百分比範圍內時呼叫此方法。
onFinish - 在所有測試執行完畢後呼叫 onFinish 方法。
TestListener.java 如下所示
import org.testng.ITestContext;
import org.testng.ITestListener;
import org.testng.ITestResult;
public class TestListener implements ITestListener {
@Override
public void onTestStart(ITestResult result) {
}
@Override
public void onTestSuccess(ITestResult result) {
System.out.println("Success of test cases and its details are : "+result.getName());
}
@Override
public void onTestFailure(ITestResult result) {
System.out.println("Failure of test cases and its details are : "+result.getName());
}
@Override
public void onTestSkipped(ITestResult result) {
System.out.println("Skip of test cases and its details are : "+result.getName());
}
@Override
public void onTestFailedButWithinSuccessPercentage(ITestResult result) {
System.out.println("Failure of test cases and its details are : "+result.getName());
}
@Override
public void onStart(ITestContext context) {
// TODO Auto-generated method stub
}
@Override
public void onFinish(ITestContext context) {
// TODO Auto-generated method stub
}
}
建立 testng.xml
接下來,讓我們在 /work/testng/src 中建立 testng.xml 檔案來執行測試用例。此檔案以 XML 格式捕獲您的整個測試過程。此檔案使您可以輕鬆地在單個檔案中描述所有測試套件及其引數,您可以將其檢入程式碼儲存庫或透過電子郵件傳送給同事。它還可以輕鬆提取測試子集或拆分多個執行時配置(例如,testngdatabase.xml 只執行測試您的資料庫的測試)。
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "https://testng.org/testng-1.0.dtd">
<suite name="Suite">
<listeners>
<listener class-name="TestListener"/>
</listeners>
<test thread-count="5" name="Test">
<classes>
<class name="SimpleTestClass"/>
</classes>
</test> <!-- Test -->
</suite> <!-- Suite -->
如您所見,我們需要在此 XML 檔案中定義監聽器。
使用 javac 編譯測試用例。
/work/testng/src$ javac SimpleTestClass.java TestListener.java
現在,執行 testng.xml,這將執行在 <test> 標籤中定義的測試用例。
/work/testng/src$ java org.testng.TestNG testng.xml
驗證輸出。
sum=42 Success of test cases and its details are : sum Test case has failed Failure of test cases and its details are : testtofail =============================================== Suite Total tests run: 2, Passes: 1, Failures: 1, Skips: 0 ===============================================