使用reportNG替换testNG的默认报告

reportNG替换testNG

reportng的官网介绍:http://reportng.uncommons.org/

1.下载reportNG的jar包:http://pan.baidu.com/s/1hq5znLU

2.reprotNG的源码:https://github.com/dwdyer/reportng

3.在项目中导入reportNG的jar包

Maven 库配置地址

<dependency>
    <groupId>org.uncommons</groupId>
    <artifactId>reportng</artifactId>
    <version>1.1.4</version>
    <scope>test</scope>
</dependency>

4.更改eclipse设置

使用reportNG替换testNG的默认报告

5.设置完成后,运行项目,在项目test-output/html/index.html即可查看report


监听名:org.uncommons.reportng.HTMLReporter

           使用reportNG替换testNG的默认报告

6、配置testng的xml配置文件

            使用reportNG替换testNG的默认报告

       贴出来,便于拷贝:  

            <listeners>
                     <listener class-name="org.uncommons.reportng.HTMLReporter" />
                     <listener class-name="org.uncommons.reportng.JUnitXMLReporter" />
            </listeners>

           


7.设置reportng的编码

更改源文件的AbstractReporter.java,并替换相应jar包的class

    protected void generateFile(File file,
                                String templateName,
                                VelocityContext context) throws Exception
    {
        //Writer writer = new BufferedWriter(new FileWriter(file));
        //encoding to utf-8
        OutputStream out=new FileOutputStream(file);
        Writer writer=new BufferedWriter(new OutputStreamWriter(out,"utf-8"));
        try
        {
            Velocity.mergeTemplate(classpathPrefix + templateName,
                                   ENCODING,
                                   context,
                                   writer);
            writer.flush();
        }
        finally
        {
            writer.close();
        }
    }

 

8.更改报告的方法排列顺序,按照方法的执行先后顺序来进行排序的

更改TestResultComparator.java,并替换相应jar包的class

     public int compare(ITestResult result1, ITestResult result2)
     {
         //return result1.getName().compareTo(result2.getName());
         int longresult2 = 0;
         if(result1.getStartMillis()<result2.getStartMillis()) {
             longresult2 = -1;
         }else {
             longresult2 = 1;
         }
         return longresult2;
     }

 9.更改报告输出样式

在reportng-1.1.4.jar的reportng.properties文件中增加

oneclass.description=Description
oneclass.duration=Duration
oneclass.testdata=Data being used
oneclass.testresult=Test result
oneclass.screenshot=Screen shot
oneclass.additionalinfo=Additional Info

在reportng-1.1.4.jar的results.html.vm文件中更改

<tr>
<td colspan="1" class="group">$testClass.name</td>
<td colspan="1" class="group">$messages.getString("oneclass.duration")</td>
<td colspan="1" class="group">$messages.getString("oneclass.testresult")</td>
</tr>

10.效果图

使用reportNG替换testNG的默认报告



 11、通过Apache ANT构建测试,生成reportng html report

                    修改配置文件build.xml,ant运行即可

                   使用reportNG替换testNG的默认报告

                  通知执行ant ,发现有错误,提示:无法找到org.uncommons.reportng.HTMLReporter里面的类文件,这里是因为没有把reportng的那几个jar包放到libs文件夹                   中,放进去后,即可以正常执行ant

                   使用reportNG替换testNG的默认报告

                   test-output文件中可以查看生成的html测试报告。

 

12、用jenkins执行测试构建时,jenkins中测试报告可能显示不全,这里需要改变一下jenkins的启动方式:

                      默认方式为:java -jar jenkins.war

                      改为: java -Dhudson.model.DirectoryBrowserSupport.CSP= -jar jenkins.war

                      这个问题可参见下面这位大神的文章:

                      http://www.cnblogs.com/xiaomingtx/p/5669798.html