2011-03-25 196 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或者您可以搜索解决方案。希望这可以帮助