2011-03-25 194 views
1

我想生成HTML testNG報告。默認情況下,我們在運行testNG後會有一個報告文件,稱爲「emailable-reports」。但是現在我想創建自己的HTML報告。我試圖使用ITestListener和ITestReport.But,即使我重寫這些方法,它沒有做任何事情。我不知道如何以及在哪裏使用這些方法。我有兩個測試用例。所以,現在在那裏我必須把代碼來生成報表...生成HTML TestNG報告

回答

1

documentation,該ITestListener接口的實現是專爲實時報告,而IReporter接口的實現旨在生成套件後報告運行完成。

實施IReporter實例和generateReport(List<ISuite> suites, String outputDirectory)方法應該允許您查看測試結果並創建HTML報告。

+0

這是生成報告的正確方法,謝謝Feanor。 – 2011-03-26 02:19:59

+1

你能舉一些例子來生成報告嗎?因爲我試圖生成報告,但我得到錯誤。 – 2011-03-26 09:02:13

+0

@Kalpana:請在上面的問題中添加更多關於錯誤的詳細信息,以便我們知道如何提供幫助。 – Feanor 2011-03-27 03:15:34

1

@Feanor - 根據您的implementataion

################ 
    Implementing an instance of IReporter and the generateReport(List<ISuite> suites, String outputDirectory) 
################# 

我們這裏有一個問題。 假設我們已經實現Ireporter的情況下說「CustomReporter」,並覆蓋generateReport它獲取由XML文件

添加的偵聽這TestNG的後還將調用EmailableReport這也實現了Ireporter其恢復爲默認值TestNG的報告稱爲

0

我知道這是一個古老的線程,但我已經解釋here如何自定義TestHTMLReporter在這裏它是:

與您customReport你不得不實施IReporter,延長TestListenerAdapter如果你想重寫generateReport方法實施自定義TestHTMLReporter。對於其他記者來說,你可能不得不做點事情,但這個概念將保持不變。你可以像下面那樣實現自定義的'TestHTMLReporter'。

在你的項目中創建一個CustomReport.java文件和TestHTMLReporter.java全部內容複製粘貼,在getOutputFile方法來更改文件的名稱和它看起來像下面

public class CustomReport extends TestListenerAdapter implements IReporter { 

    @Override 
     public void generateReport(List<XmlSuite> xmlSuites, List<ISuite> suites, 
            String outputDirectory) { 

     } 
    ... 
    //paste the content of TestHTMLReporter.java here 
    ... 
    ... 

確保所有的進口都到位從TestHTMLReporter.java 現在,在此文件中根據您的要求更改。對於例如:如果你想在generateTable方法添加結束時間每個測試的,然後在正確的位置添加下面的代碼片段

// Test class 
     String testClass = tr.getTestClass().getName(); 
     long testMillis = tr.getEndMillis(); 
     String testMillisString = Long.toString(testMillis); 
     if (testClass != null) { 
     pw.append("<br>").append("Test class Name: ").append(testClass); 

     // this line to add end time in ms 
     pw.append("<br>").append("End Time(ms): ").append(testMillisString); 
     // Test name 
     String testName = tr.getTestName(); 
     if (testName != null) { 
      pw.append(" (").append(testName).append(")"); 

     } 

然後你會得到像下面

enter image description here

現在,您將得到兩份報告,一份使用默認值,另一份使用您的文件名。 現在唯一保留的是關閉默認報告監聽器,因此您只能獲得一個報告。爲此,您可以按照this或者您可以搜索解決方案。希望這可以幫助