Maven中配置生成单元测试报告配置

对junit单元测试的报告:

  1.  -------------------------------------------------------

  2.   T E S T S

  3.  -------------------------------------------------------

  4.  Running com.liuyan.account.mail.AccountImageServiceImplTest

  5.  ---------------------------------1990

  6.  Tests run: 2, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.926 sec

  7.  Running com.liuyan.account.mail.AccountImageUtilTest

  8.  Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.001 sec

  9.

  10.  Results :

  12.  Tests run: 3, Failures: 0, Errors: 0, Skipped: 0

  运行报告是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中配置如下


1.  <build>

2.      <plugins>

3.          <plugin>

4.              <groupId>org.apache.maven.plugins</groupId>

5.              <artifactId>maven-surefire-plugin</artifactId>

6.              <version>2.5</version>

7.              <configuration>

8.                  <skipTests>true</skipTests>

9.              </configuration>

10.          </plugin>

11.      </plugins>

12.  </build>

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

 本个模块有两个测试用例类,如果仅仅想运行一个测试用例该怎么办。运行下面命令

  1.  test -Dtest=AccountImageServiceImplTest

  这个是指定具体运行哪个测试用例。当然需要将pom文件中忽略测试用例的配置注释掉。

  也可以测试多个测试用例

  1.  mvn test -Dtest=AccountImageServiceImplTest,AccountImageUtilTest

  也可以使用模糊匹配进行测试

  1.  mvn test -Dtest=*Test


1.  <build>

2.      <plugins>

3.          <plugin>

4.              <groupId>org.apache.maven.plugins</groupId>

5.              <artifactId>maven-surefire-plugin</artifactId>

6.              <version>2.5</version>

7.              <configuration>

8.                  <includes>

9.                      <include>**/*Test.java</include>

10.                  </includes>

11.                  <excludes>

12.                      <exclude>**/AccountImageUtilTest.java</exclude>

13.                  </excludes>

14.              </configuration>

15.          </plugin>

16.      </plugins>

17.  </build>

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

  Junit的单元测试报告:


<reporting>

<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>

</reporting>

  这个默认生成的报告是txt,要生成html的报告需要使用命令mvn surefire-report:report. 这会在target/site下面生成html的报告

  后来经测试发现,其实maven-surefire-plugin就已经可以生成txt和xml的测试结果,如果要html的报告才需要maven-surefire-report-plugin

  4.  测试报告

  基本的测试报告上面已经介绍过了,下面我们看看测试覆盖率的报告。运行如下命令

  1.  mvn cobertura:cobertura

  pom配置


<project>

...

<reporting>

<plugins>

<plugin>

<groupId>org.codehaus.mojo</groupId>

<artifactId>cobertura-maven-plugin</artifactId>

<version>2.5.1</version>

</plugin>

</plugins>

</reporting>

...

</project>

  常用命令

  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的测试,可以运行项目的单元测试用例,并生成报告。使用者可以根据自己的需要配置测试选项以满足项目的测试需求。最后说一下,测试十分重要,往往大手笔的产品测试人员和开发人员的比例是2:1。

最新内容请见作者的GitHub页:http://qaseven.github.io/

时间: 2024-07-28 20:02:32

Maven中配置生成单元测试报告配置的相关文章

cobertura-maven-plugin 生成单元测试报告时排除接口,异常类,常量类

当我们为一个项目用cobertura生成单元测试覆盖率报告时,常常有以下需求: 需求说明: 因为一个项目有许多接口定义,常量定义,异常类定义,这些类是不需要单元测试的.而当我们用cobertura来生成测试报告时候,如果不排除这些类的话,就会使得报告的数据不太好看,因为毕竟有某些被算进去的类没有对应的单元测试嘛.所以我们就希望可以在用cobertura-maven-plugin生成测试报告时候,能自动排除这些接口,常量,异常类. 解决方法: 其实很简单,只要在项目的pom.xml中用到cober

snapshot-请问,用maven项目中,在pom.xml配置如下信息是配置的什么?

问题描述 请问,用maven项目中,在pom.xml配置如下信息是配置的什么? com.exampleexample-common1.0-SNAPSHOT 解决方案 请百度maven基础.

配置maven中出现的问题

问题描述 配置maven中出现的问题 在为一个历史遗留工程配置完svn+maven+hudson后,hudson控制台报错 org.apache.maven.lifecycle.LifecycleExecutionException: Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:2.0.2:compile (default-compile) on project qoe2: Compilation f

Maven中测试插件(surefire)的相关配置及常用方法

原创文章,版权所有,允许转载,标明出处:http://blog.csdn.net/wanghantong 1. 在Maven中配置测试插件surefire <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-surefire-plugin</artifactId> <version>2.17</version> </plugin

Maven的下载,安装,配置,测试,初识以及Maven私服

1:Maven目录分析 bin:含有mvn运行的脚本 boot:含有plexus-classworlds类加载器框架 conf:含有settings.xml配置文件 lib:含有Maven运行时所需要的java类库 Settings.xml 中默认的用户库: ${user.home}/.m2/repository[通过maven下载的jar包都会存储到指定的个人仓库中] Maven默认仓库下载地址在: maven的lib目录下maven-model-builder-3.0.4.jar的pom.x

thinkPHP中钩子的两种配置调用方法详解_php实例

本文实例讲述了thinkPHP中钩子的两种配置调用方法.分享给大家供大家参考,具体如下: thinkphp的钩子行为类是一个比较难以理解的问题,网上有很多写thinkphp钩子类的文章,我也是根据网上的文章来设置thinkphp的钩子行为的,但根据这些网上的文章,我在设置的过程中,尝试了十几次都没有成功,不过,我还是没有放弃,最后还是在一边调节细节,一边试验的过程中实现了钩子行为的设置.下面是我个人的设置经验,在这里跟大家分享一下. 个人做了两种设置,都试验成功了,一个简单点,在thinkphp

maven ssh 模块-maven ssh整合 模块开发 怎么配置applicationContext.xml

问题描述 maven ssh整合 模块开发 怎么配置applicationContext.xml 我们现在用maven 开发web项目 关于ssh框架整合时 因为是分多个模块开发 每个模块都会有一个applicationContext.xml 这么多的applicationContext.xml 中 有一个是主要的 其它的都是每个模块的具体配置 这个主要的配置文件该怎么配置 该放在哪

03_MyBatis基本查询,mapper文件的定义,测试代码的编写,resultMap配置返回值,sql片段配置,select标签标签中的内容介绍,配置使用二级缓存,使用别名的数据类型,条件查询ma

 1 PersonTestMapper.xml中的内容如下: <?xmlversion="1.0"encoding="UTF-8"?> <!DOCTYPEmapper PUBLIC"-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <!--  namespace:命名空间,用来唯

使用maven搭建项目时,数据源配置context.xml文件应该放哪儿?

问题描述 使用maven搭建项目时,数据源配置context.xml文件应该放哪儿? 项目分为 util dao servrice web 四个子模块.因为我还没学过框架知识,所以只能用基本的jdbc数据源连接数据库.基本连接数据库的dao文件写在util模块中.那请问context.xml文件究竟应该放在哪儿TAT..原则上不应该放在web模块的META-INF文件夹下吗TAT可是都没用阿..急急急! 解决方案 放在资源目录下,或者项目目录下. 解决方案二: src/main/resource