現在位置:首頁 > Java技術 > TestNG > TestNG自定義記錄器

TestNG自定義記錄器

來源:原創文章    由 極客書 更新版本    瀏覽:人次

在本節中,我們將介紹一個例子,編寫自定義記錄器和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(List xmlSuites, 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

創建一個文件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或文本格式的文件,根據報告要求。

 

本站文章除注明轉載外,均為本站原創或編譯
歡迎任何形式的轉載,但請務必注明出處,尊重他人勞動,傳播學習教學;
轉載請注明:文章轉載自:極客書 [http://www.gitbook.net]
本文標題:TestNG自定義記錄器
轉載請保留原文鏈接:http://www.gitbook.net/html/testng/2013/0916307.html
上一篇:TestNG自定義日誌記錄      下一篇:TestNG HTML和XML報告