reportNG打包

作者: Ivanlfli | 来源:发表于2018-01-24 00:21 被阅读124次
    前言

    工作中会对java的类进行接口测试,选用的testNG测试框架,但是testNG自带的测试报告实在是不美观,且功能较差,便选用reportNG来生成测试报告。不过reportNG并不支持中文,且生成的报告页面也需再优化一点,但是reportNG目前已不再更新,最后的版本为1.1.4版本,所以很多人选择修改reportNG代码,定制reportNG。自己在网上也搜了不少资料去修改reportNG源代码,但最后卡在生成的jar包无法用,然后花了上午一小会时间研究了下,搞定打包。看到网上很多人在其他人的文章下留言问怎么打包reportNG,所以这里就分享下。

    定制reportNG
    reportng-master/
    ├── CHANGELOG.txt
    ├── LICENSE.txt
    ├── NOTICE.txt
    ├── README.txt
    ├── build.xml
    ├── etc
    │   ├── intellij
    │   ├── sample-testng.xml
    │   ├── sample2-testng.xml
    │   └── testng.xml
    ├── lib
    │   └── compiletime
    └── reportng
        ├── lib
        ├── pom.xml
        ├── reportng.iml
        └── src
    
    7 directories, 10 files
    

    我们要修改的,仅仅是pom.xml所在的reportng目录下的maven工程。

    • 修改maven工程目录
      源码中的maven工程目录如下:
    reportng/
    ├── lib
    │   └── runtime
    │       └── velocity-dep-1.4.jar
    ├── pom.xml
    ├── reportng.iml
    └── src
        ├── css
        │   └── hudsonesque.css
        └── java
            ├── main
            ├── resources
            └── test
    
    8 directories, 4 files
    

    可见,main目录处于/src/java目录下。而maven打包是编译和打包main目录下的java类文件,要求的目录格式为/src/main/java,所以改变源码的目录格式为如下格式:

    reportng/
    ├── lib
    │   └── runtime
    │       └── velocity-dep-1.4.jar
    ├── pom.xml
    ├── reportng.iml
    └── src
        ├── main
        │   ├── css
        │   ├── java
        │   └── resources
        └── test
            └── org
    
    9 directories, 3 files
    
    • 解决中文乱码
      修改AbstractReporter类中的generateFile方法如下:


      解决中文乱码

      其他可定制修改处,可自行网上搜资料,这里不再写。

    打包jar包
    • 修改pom文件:
      设置版本号,这里设置为1.1.5:
    <modelVersion>4.0.0</modelVersion>
      <name>ReportNG</name>
      <groupId>org.uncommons</groupId>
      <artifactId>reportng</artifactId>
      <version>1.1.5</version>
      <packaging>jar</packaging>
      <url>https://reportng.dev.java.net/</url>
    

    因为原文件中的testng版本号太低了,编译打包会失败,所以修改为较高的版本,这里设置为6.10版本:

        <dependency>
          <groupId>org.testng</groupId>
          <artifactId>testng</artifactId>
          <version>6.10</version>
        </dependency>
    
    • mvn package生成jar包


      IDEA中maven package

      生成jar包入如下:

    lilinfeng@lilinfengdeMacBook-Air:~/llf_code/llf_java/reportng-master/reportng/target$ ll
    total 72
    drwxr-xr-x  3 lilinfeng  staff    102  1 23 23:50 classes
    drwxr-xr-x  3 lilinfeng  staff    102  1 23 23:50 maven-archiver
    drwxr-xr-x  3 lilinfeng  staff    102  1 23 23:50 maven-status
    -rw-r--r--  1 lilinfeng  staff  35906  1 23 23:50 reportng-1.1.5.jar
    
    引用生成的reportNG jar包
    • 新建maven工程
      工程lib目录下放置上一步生成的jar包:
    IvanliTest/
    ├── IvanliTest.iml
    ├── lib
    │   └── reportng-1.1.5.jar
    ├── pom.xml
    ├── src
    │   ├── main
    │   └── test
    └── target
        ├── classes
        ├── generated-test-sources
        ├── maven-status
        ├── surefire-reports
        └── test-classes
    
    10 directories, 3 files
    

    pom文件配置如下:

    <?xml version="1.0" encoding="UTF-8"?>
    <project xmlns="http://maven.apache.org/POM/4.0.0"
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
        <modelVersion>4.0.0</modelVersion>
    
        <groupId>Hello</groupId>
        <artifactId>IvanliTest</artifactId>
        <version>1.0-SNAPSHOT</version>
    
        <dependencies>
            <dependency>
                <groupId>org.testng</groupId>
                <artifactId>testng</artifactId>
                <version>6.10</version>
                <scope>test</scope>
            </dependency>
            <dependency>
                <groupId>org.uncommons</groupId>
                <artifactId>reportng</artifactId>
                <version>1.1.5</version>
                <scope>system</scope>
                <systemPath>${project.basedir}/lib/reportng-1.1.5.jar</systemPath>
            </dependency>
            <dependency>
                <groupId>velocity</groupId>
                <artifactId>velocity</artifactId>
                <version>1.4</version>
            </dependency>
            <dependency>
                <groupId>com.google.inject</groupId>
                <artifactId>guice</artifactId>
                <version>4.0</version>
            </dependency>
            </dependencies>
        <build>
            <plugins>
                <!-- 添加插件,添加ReportNg的监听器,修改最后的TestNg的报告 -->
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-surefire-plugin</artifactId>
                    <version>2.18.1</version>
                    <configuration>
                        <properties>
                            <property>
                                <name>usedefaultlisteners</name>
                                <value>false</value>
                            </property>
                            <property>
                                <name>listener</name>
                                <value>org.uncommons.reportng.HTMLReporter,
                                    org.uncommons.reportng.JUnitXMLReporter</value>
                            </property>
                        </properties>
                        <workingDirectory>target/</workingDirectory>
                        <suiteXmlFiles>
                            <!--<suiteXmlFile>testng.xml</suiteXmlFile>-->
                        </suiteXmlFiles>
                        <forkMode>never</forkMode>
                    </configuration>
                </plugin>
                <plugin>
                    <artifactId>maven-compiler-plugin</artifactId>
                    <version>3.1</version>
                    <configuration>
                        <encoding>utf-8</encoding>
                        <fork>true</fork>
                        <source>1.8</source>
                        <target>1.8</target>
                    </configuration>
                </plugin>
            </plugins>
        </build>
    </project>
    

    测试代码如下:

    import org.testng.Assert;
    import org.testng.Reporter;
    import org.testng.annotations.Test;
    
    public class testOne {
        @Test
        public void testCase1(){
            String exp = "1";
            String act = "1";
            Reporter.log("expect: " + exp + ", actual: " + act);
            Assert.assertEquals(exp, act);
        }
    
        @Test
        public void testCase2(){
            String exp = "1";
            String act = "2";
            Reporter.log("expect: " + exp + ", actual: " + act);
            Assert.assertEquals(exp, act);
        }
    }
    
    • 执行测试
      mvn -Dtest=testOne test
      生成报告如下:


      overview
      output

      可见,报告已支持中文,即我们生成的reportNG jar包是可用的。
      希望本篇生成jar包的说明可以帮助一些想定制reportNG的同学们。

    相关文章

      网友评论

        本文标题:reportNG打包

        本文链接:https://www.haomeiwen.com/subject/bwneaxtx.html