- 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 - 自定義報表
在本節中,我們將透過示例介紹編寫自定義報表並將其附加到TestNG的方法。要編寫自定義報表類,我們的擴充套件類應該實現IReporter介面。讓我們建立一個包含自定義報表的示例。
建立測試用例類
建立一個Java類,例如,SampleTest.java 在/work/testng/src目錄下。
import org.testng.Assert;
import org.testng.annotations.Test;
public class SampleTest {
@Test
public void testMethodOne() {
Assert.assertTrue(true);
}
@Test
public void testMethodTwo() {
Assert.assertTrue(false);
}
@Test(dependsOnMethods = {"testMethodTwo"})
public void testMethodThree() {
Assert.assertTrue(true);
}
}
上述測試類包含三個測試方法,其中testMethodOne和testMethodThree執行時將透過,而testMethodTwo透過向Assert.assertTrue方法(用於測試中的真值條件)傳遞一個false布林值使其失敗。
建立自定義報表類
在/work/testng/src目錄下建立另一個名為CustomReporter.java的新類。
import java.util.List;
import java.util.Map;
import org.testng.IReporter;
import org.testng.ISuite;
import org.testng.ISuiteResult;
import org.testng.ITestContext;
import org.testng.xml.XmlSuite;
public class CustomReporter implements IReporter{
@Override
public void generateReport(List<XmlSuite> xmlSuites, List<ISuite> suites,
String outputDirectory) {
//Iterating over each suite included in the test
for (ISuite suite : suites) {
//Following code gets the suite name
String suiteName = suite.getName();
//Getting the results for the said suite
Map<String, ISuiteResult> suiteResults = suite.getResults();
for (ISuiteResult sr : suiteResults.values()) {
ITestContext tc = sr.getTestContext();
System.out.println("Passed tests for suite '" + suiteName +
"' is:" + tc.getPassedTests().getAllResults().size());
System.out.println("Failed tests for suite '" + suiteName +
"' is:" + tc.getFailedTests().getAllResults().size());
System.out.println("Skipped tests for suite '" + suiteName +
"' is:" + tc.getSkippedTests().getAllResults().size());
}
}
}
}
上述類實現了org.testng.IReporter介面。它實現了IReporter介面中generateReport方法的定義。該方法接受三個引數:
xmlSuite,這是正在執行的testng XML檔案中提到的套件列表。
suites,包含測試執行後的套件資訊。此物件包含關於包、類、測試方法及其測試執行結果的所有資訊。
outputDirectory,包含報表生成位置的輸出資料夾路徑資訊。
建立testng.xml
在/work/testng/src目錄下建立testng.xml來執行測試用例。
<?xml version = "1.0" encoding = "UTF-8"?>
<suite name = "Simple Reporter Suite">
<listeners>
<listener class-name = "CustomReporter" />
</listeners>
<test name = "Simple Reporter test">
<classes>
<class name = "SampleTest" />
</classes>
</test>
</suite>
使用javac編譯SampleTest和CustomReporter類。
/work/testng/src$ javac CustomReporter.java SampleTest.java
現在,執行testng.xml。
/work/testng/src$ java org.testng.TestNG testng.xml
驗證輸出。
=============================================== Simple Reporter Suite Total tests run: 3, Failures: 1, Skips: 1 =============================================== Passed tests for suite 'Simple Reporter Suite' is:1 Failed tests for suite 'Simple Reporter Suite' is:1 Skipped tests for suite 'Simple Reporter Suite' is:1
上述示例顯示了一個簡單的自定義報表,它為測試執行中包含的每個套件在控制檯上列印失敗、透過和跳過的測試數量。報表主要用於生成測試執行的最終報告。擴充套件可以根據報表要求生成XML、HTML、XLS、CSV或文字格式的檔案。
testng_test_results.htm
廣告