开始做报告了!
遇到这个问题卡了半天吧,遇到各种问题,可能因为其他人都比较顺利,所以看了各种帖子最后才成功。私以为笔者遇到的问题算是比较多的,所以把所有的整理一下,希望可以帮助大家更顺利完成。 注:偷懒的想要个带饼状图的报告,代码地址给你一个:带饼状图报告 如果懒得真不想动的,这里是我整理的一个带饼状图、中文显示的jar包拿去吧(版本1.1.7) 提取码:htuu
如果用这个jar包,一定在pom.xm文件中,加入以下依赖:

<dependency>
            <groupId>velocity</groupId>
            <artifactId>velocity</artifactId>
            <version>1.4</version>
</dependency>

想自己练练手的,可以慢慢看。

先放个效果图(不带饼状图的)

怎么替换idea的java idea替换jar包_怎么替换idea的java


下面开始操作:

1、下载reportng源码

注意:是源码,笔者当时傻了吧唧拿着jar包打开来改,全是锁住一脸懵逼。

源码地址:https://github.com/dwdyer/reportng

怎么替换idea的java idea替换jar包_xml文件_02


根据你自己的版本号下载对应的源码,笔者是1.1.4,选择好后,点击下载(download)。

2、用idea导入源码,配置环境

1、编码导入后,记得设置相应的环境,根据自己的环境来,笔者是jdk1.8。

怎么替换idea的java idea替换jar包_reportng替代testng_03


2、修改pom.xml文件

(1)这里据说要修改一下版本,反正就是比你下载下来的高就可以,我写的是1.1.5

怎么替换idea的java idea替换jar包_reportng_04


(2)修改testng版本信息,没有的就加上这个。

根据你项目本来依赖的testng的jar包版本来(我是6.14.3):

<dependencies>
    <dependency>
      <groupId>org.testng</groupId>
      <artifactId>testng</artifactId>
      <version>6.14.3</version>
    </dependency>
    <dependency>

3、修改代码,实现自定义报告

1、修改报告的输出目录
打开HTMLReporter.java,把generateReport方法的outputDirectoryName参数赋值成你想输出的文件夹。

outputDirectoryName="AutoTest_reports";

怎么替换idea的java idea替换jar包_jar包_05


2、解决编码乱码问题

修改源文件的AbstractReporter.java

怎么替换idea的java idea替换jar包_jar包_06

protected void generateFile(File file,
                                String templateName,
                                VelocityContext context) throws Exception
    {
//        Writer writer = new BufferedWriter(new FileWriter(file));
        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();
        }
    }

3、更改报告的方法排列顺序,按照方法的执行先后顺序来进行排序的
修改源文件TestResultComparator.java

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;

    }

怎么替换idea的java idea替换jar包_reportng替代testng_07

4、更改输出报告的样式
在文件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

怎么替换idea的java idea替换jar包_reportng_08

然后根据需要可以修改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>

怎么替换idea的java idea替换jar包_jar包_09


5、优化description的注释显示

测试用例添加 description的注释,能够实现对用例的说明,但是生成的html是鼠标划上才显示内容,很不方面查看。其实我们更需要的是让他直接显示出来,这样子我们更能够直观的知道这个是什么测试用例。

怎么替换idea的java idea替换jar包_reportng_10


修改class-results.html.vm文件

将代码替换一下本来的即可,就是把描述放进内容里一起显示。

<span class="description" title="$testResult.method.description">$testResult.name$testInstanceName ($testResult.method.description)</span>

怎么替换idea的java idea替换jar包_xml文件_11


6、优化显示通过、失败以及占比

修改reportng.properties文件,reportng.properties中的内容是键值对,修改后面的值为中文即可。(根据需要修改)

注:笔者这个地方存在编码问题,最后还是乱码,很多朋友但是正常这个原因后续更新。


2019/03/01更新
关于这个填写中文乱码的问题,其实虽然是键值对,也不能直接写中文,而是应该进行Unicode转码,写中文转为Unicode后的结果。

passed=\u901A\u8FC7
failed=\u5931\u8D25

怎么替换idea的java idea替换jar包_jar包_12

9nLmNzZG4ubmV0L3FxXzM5NzA0Njgy,size_16,color_FFFFFF,t_70)

7、关于生成饼状图的修改

笔者没有做这部分,可以参考一个可靠文章

reportng定制修改

4、生成jar包

找到build.xml文件,然后右击,找到Add as Ant Build File

怎么替换idea的java idea替换jar包_xml文件_13


双击:release

怎么替换idea的java idea替换jar包_xml文件_14


下面就是错误集锦:

1、编辑报错,显示需要更高版本的jdk

下载高版本的jdk,然后重新配置一下环境,具体配置可以看开头。

2、jar包release失败:

怎么替换idea的java idea替换jar包_jar包_15


这个问题折腾笔者很久,毕竟警告报错,在build.xml文件里面都是红一片。

那么根据提示,先解决报错问题,修改上边关于编码乱码问题的代码。

将以前的

OutputStream out=new FileOutputStream(file);

修改为

FileOutputStream out=new FileOutputStream(file);

怎么替换idea的java idea替换jar包_xml文件_16


重新release一下,成功了!

怎么替换idea的java idea替换jar包_怎么替换idea的java_17


3、通过ant构建

怎么替换idea的java idea替换jar包_jar包_18


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

怎么替换idea的java idea替换jar包_怎么替换idea的java_19


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

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

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

(笔者所做不涉及,放大神文章)

5、将新jar包与项目关联

1、生成的jar包在源码下的release文件夹下面。

怎么替换idea的java idea替换jar包_jar包_20


直接解压取到jar包,然后参考笔者这篇文章【简单易上手】maven如何依赖本地jar包?将新的jar包与项目关联,加到maven库中。

2、更改项目的pom.xml文件,配置testng.xml监听

首先是pom.xml文件

<!--依赖reportNG 关联testNG-->
        <dependency>
            <groupId>org.uncommons</groupId>
            <artifactId>reportng</artifactId>
            <version>1.1.5</version>
            <scope>compile</scope>
            <exclusions>
                <exclusion>
                    <groupId>org.testng</groupId>
                    <artifactId>testng</artifactId>
                </exclusion>
            </exclusions>
        </dependency>

修改testng.xml文件

怎么替换idea的java idea替换jar包_xml文件_21

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

3、测试用例配置监听

怎么替换idea的java idea替换jar包_jar包_22


怎么替换idea的java idea替换jar包_怎么替换idea的java_23


怎么替换idea的java idea替换jar包_jar包_24

6、查看测试结果的时候到了

怎么替换idea的java idea替换jar包_xml文件_25