在本節中,我們將介紹一個例子,編寫自定義記錄器和TestNG的方法。要編寫一個定製的記錄器類,我們的擴展類應實現IReporter接口。讓我們繼續前進,並創建一個示例使用自定義的記錄器。
創建一個Java類為 SampleTest.java 在 C:\ > TestNG_WORKSPACE
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由通過一個falseBoolean的值Assert.assertTrue方法,它是用於在測試中的真值條件失敗。
創建另一個新的類名為 CustomReporter.java 在 C:\ > TestNG_WORKSPACE
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(ListxmlSuites, List 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 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正在執行中提到的列表套件
第二個是套件,其中包含一套測試執行後信息,該對象包含了所有的信息包,類,測試方法和測試執行結果。
第三的outputDirectory,報告將產生的輸出文件夾路徑,其中包含的信息。
創建一個文件testng.xml 在 C:\ > TestNG_WORKSPACE 來執行測試用例
<?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>
編譯SampleTest,CustomReporter類使用javac
C:\TestNG_WORKSPACE>javac CustomReporter.java SampleTest.java
運行 testng.xml.
C:\TestNG_WORKSPACE>java -cp "C:\TestNG_WORKSPACE" 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,CHM,CSV或文本格式的文件,根據報告要求。