• Maven单元测试报告及测试覆盖率


     对junit单元测试的报告:类似这样的结果
    -------------------------------------------------------
     T E S T S
    -------------------------------------------------------
    Running com.cn.qin.actionTest.UserActionTest
    sdffsdfsdf
    Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.061 sec - in com.cn.qin.actionTest.UserActionTest
    
    Results :
    
    Tests run: 1, Failures: 0, Errors: 0, Skipped: 0
    
    [INFO] 
    [INFO] <<< cobertura-maven-plugin:2.5.1:cobertura (cobertura-report) < [cobertura]test @ Struts <<<
    [INFO] 
    [INFO] --- cobertura-maven-plugin:2.5.1:cobertura (cobertura-report) @ Struts ---
    [INFO] Cobertura 1.9.4.1 - GNU GPL License (NO WARRANTY) - See COPYRIGHT file
    Cobertura: Loaded information on 3 classes.
    Report time: 298ms

    运行报告是junit自己的报告输出,和咱们在Eclipse运行的报告差不多。以上代表运行了3个用例,和预期效果不符的是0个,失败的用例是0个,忽略的用例数是0个。   如果需要跳过单元测试,则可以运行如下命令

    1.  mvn package -DskipTests
      大家可能要问,为何Maven能够自己寻找我们编写的测试类呢?其实还是那句约定大于配置。Maven自动去寻找src/test/java下面的类,当此文件夹下面的类符合以下规范,那么Maven默认认为他们是单元测试用例类。
      Test*.java:任何目录下以Test为开始的类
      *Test.java: 任何目录下以Test为结尾的类
      *TestCase.java: 任何目录下以TestCase为结尾的类。
      如果想在一段时间内节省项目构建时间,暂时全部忽略单元测试。那么可以在pom.xml中配置如下
    <build>
          <plugins>
              <plugin>
                  <groupId>org.apache.maven.plugins</groupId>
                  <artifactId>maven-surefire-plugin</artifactId>
                  <version>2.5</version>
                  <configuration>
                     <skipTests>true</skipTests>
                  </configuration>
              </plugin>
          </plugins>
      </build>

    等到项目完全开发完了,需要测试用例的时候将其注释掉即可。

    本个模块有两个测试用例类,如果仅仅想运行一个测试用例该怎么办。
    运行下面命令: test -Dtest=AccountImageServiceImplTest
    这个是指定具体运行哪个测试用例。当然需要将pom文件中忽略测试用例的配置注释掉。
    也可以测试多个测试用例: mvn test -Dtest=AccountImageServiceImplTest,AccountImageUtilTest
    也可以使用模糊匹配进行测试:mvn test -Dtest=*Test
    <build>
      <plugins>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-surefire-plugin</artifactId>
          <version>2.5</version>
          <configuration>
            <includes>
              <include>**/*Test.java</include>
            </includes>
            <excludes>
              <exclude>**/AccountImageUtilTest.java</exclude>
            </excludes>
          </configuration>
        </plugin>
      </plugins>
    </build>

    其中includes是需要测试的类,excludes是要排除之外测试用例。可以使用模糊匹配。**用来匹配任意件路经,*匹配任意类。

    Junit的单元测试报告的pom.xml配置

    <build>
      <plugins>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-surefire-report-plugin</artifactId>
          <version>2.12.2</version>
          <configuration>
            <showSuccess>false</showSuccess>
          </configuration>
        </plugin>
      </plugins>
    </build>
    这个默认生成的报告是txt,要生成html的报告需要使用命令mvn surefire-report:report. 这会在target/site下面生成html的报告, 后来经测试发现,
    其实maven-surefire-plugin就已经可以生成txt和xml的测试结果,如果要html的报告才需要maven-surefire-report-plugin 
     
    4.  测试报告
      基本的测试报告上面已经介绍过了,下面我们看看测试覆盖率的报告。运行如下命令:mvn cobertura:cobertura   其pom.xml配置
    <build>
      <plugins>
        <plugin>
          <groupId>org.codehaus.mojo</groupId>
          <artifactId>cobertura-maven-plugin</artifactId>
          <version>2.5.1</version>
        </plugin>
      </plugins>
    </build>
    常用命令
      mvn cobertura:help          查看cobertura插件的帮助
      mvn cobertura:clean         清空cobertura插件运行结果
      mvn cobertura:check         运行cobertura的检查任务
      mvn cobertura:cobertura     运行cobertura的检查任务并生成报表,报表生成在target/site/cobertura目录下
      cobertura:dump-datafile     Cobertura Datafile Dump Mojo
      mvn cobertura:instrument    Instrument the compiled classes
      在target文件夹下出现了一个site目录,下面是一个静态站点,里面就是单元测试的覆盖率报告。
      详细配置还可参考:http://zhanshenny.iteye.com/blog/1440571
    5.  总结
      这次我们介绍了Maven的测试,可以运行项目的单元测试用例,并生成报告。使用者可以根据自己的需要配置测试选项以满足项目的测试需求。
    我自己测试的pom.xml配置插件
    <build>
      <plugins>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-surefire-plugin</artifactId>
          <version>2.19.1</version>
          <configuration>
            <!--设置包含的测试类 -->
            <includes>
              <include>******</include>
              <include>*/User*</include>
            </includes>
            <!-- 设置不进行测试类 -->
            <excludes>
              <exclude>Test*</exclude>
            </excludes>
            <!-- 跳过测试阶段,測試類写的有问题也会出错,一般不推荐 -->
            <!--<skip>true</skip> -->
          </configuration>
        </plugin>
    
        <!-- 构建项目站点报告插件 -->
        <plugin>     
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-site-plugin</artifactId>
          <version>3.0-beta-3</version>
          <configuration>
            <!-- 配置站点国际化 -->
            <locales>zh_CN</locales>
            <!-- 输出编码 -->
            <outputEncoding>GBK</outputEncoding>
          </configuration>
        </plugin>
        
        <!-- 项目API doc报告 -->
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-javadoc-plugin</artifactId>
          <version>2.7</version>
        </plugin>
    
        <!-- 单元测试报告html -->
        <plugin>      
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-surefire-report-plugin</artifactId>
          <version>2.12.2</version>
          <configuration>
            <showSuccess>false</showSuccess>
          </configuration>
        </plugin>
        
        <!-- 测试覆盖率的报告 -->
        <plugin>      
          <groupId>org.codehaus.mojo</groupId>
          <artifactId>cobertura-maven-plugin</artifactId>
          <version>2.5.1</version>
          <configuration>
            <formats>
              <format>html</format>
              <format>xml</format>
            </formats>
          </configuration>
          <executions>
            <execution>
              <id>cobertura-report</id>
              <goals>
                <goal>cobertura</goal>
              </goals>
              <phase>test</phase>
            </execution>
          </executions>
        </plugin>
        
      </plugins>
    </build>

    生成的测试覆盖率会在你自己项目的target/site/cobertura/下面  我的路径是 file:///D:/InstallSoft/V2/workspace/user-parent/Struts/target/site/cobertura/index.html

     
  • 相关阅读:
    《剑指offer》 面试题43 n个骰子的点数 (java)
    《剑指offer》面试题45 圆圈中最后剩下的数字(Java版本)
    《剑指offer》面试题39 二叉树的深度(java)
    《剑指offer》面试题32----从1到n整数中1出现的次数
    快速排序思路整理
    《Java程序猿面试宝典》之字符串
    Tomcat的server.xml
    easyui combobox 清除选中项目 和 清空option选项
    2019
    throw UnsupportedOperationException
  • 原文地址:https://www.cnblogs.com/mistor/p/5225380.html
Copyright © 2020-2023  润新知