Failures表示要测试的结果与预期值不一致;Errors表示测试代码或产品代码发生了未预期的错误;Skipped表示那些被标记为忽略的测试方法。在Junit中用户可以使用@Ignore注解标记忽略测试方法。

Maven本身不是一个单元测试框架。Maven所做的只是在构建执行到特定生命周期阶段的时候,通过插件来执行JUnit或TestNG的测试用例。Maven-surefire-plugin被称之为测试运行器(Test Runner)。它可以兼容JUnit3,JUnit4以及TestNG。

在默认情况下,maven-surefire-plugin的test目标会自动执行测试源码路径(src/test/java)下所有符合一组命名模式的测试类。这组模式为:

  **/Test*.java

  **/*Test.java

  **/*TestCase.java

只要将测试类按上述模式命名。Maven就能自动运行它们,用户不需要定义测试集合来聚合测试用例。以Tests结尾的测试是不会得以自动执行的。

maven-compiler-plugin的testCompile和maven-surefire-plugin的test目标都提供了一个参数skip用来跳过测试编译和测试运行。这个参数的命令行表达式为maven.test.skip

maven-surefire-plugin提供了一个test参数让Maven用户能够在命令行指定要运行的测试用例。

mvn test -Dtest=**Test  //指定运行**Test类

在POM中配置test运行的类

<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.5</version>
<configuration>
<includes>
<include>**/*Tests.java</include>
</includes>
</configuration>
</plugin>

在POM中配置不运行那些测试类

<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.5</version>
<configuration>
<exclusions>
<exclusion>**/*ServiceTest.java</exclusion>
</exclusions>
</configuration>
</plugin>

默认情况下,maven-surefire-plugin会在项目的target/surefire-reports目录下生成两种格式的错误报告:

  简单文本格式

  与JUnit兼容的XML格式

测试覆盖率是衡量项目代码质量的一个重要参考指标。Cobertura是一个开源的测试覆盖率统计工具。用户可以使用更简单的命令为Maven项目生成测试覆盖率报告。

mvn cobertura:cobertura

TestNG

<dependency>
<groupId>org.testing</groupId>
<artifactId>testing</artifactId>
<version>5.9</version>
<scope>test</scope>
<classifier>jdk15</classifier>
</dependency>

TestNG允许用户使用一个名为testing.xml的文件来配置想要运行的测试集合。

<?xmlv version="1.0" encoding="UTF-8" ?>

<suite name="Suite1" verbose="1">
<test name="Regression1">
<classes>
<class name="com.***.***.*Test" />
</classes>
</test>
</suite>

然后在maven-surefire-plugin中使用该testing

<plugin>
<groupId>org.apache,maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifacId>
<version>2.5</version>
<configuration>
<suiteXmlFiles>
<suiteXmlFile>testing.xml</suiteXmlFile>
</suiteXmlFiles>
</configuration>
</plugin>

TestNG较JUnit的一大优势在于它支持测试组的概念。由于用户可以自由地标注方法所属的测试组,因此这种机制能让用户在方法级别对测试进行归类。JUnit只能实现类级别的测试归类。

@Test(groups={"util","medium"})  //将注解下的方法加入到两个测试组util和medium中

<plugin>
<groupId>org.apache.maven.plugin</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<configuration>
<groups>util,medium</groups>
</configuration>
</plugin>

Maven配置打包测试类

<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>2.2</version>
<executions>
<execution>
<goals>
<goal>test-jar</goal>
</goals>
</execution>
</executions>
</plugin>

maven-jar-plugin有两个目标,分别是jar和test-jar。前横通过maven的内置绑定在default生命周期的package阶段运行,其行为就是对项目主代码进行打包,后者并没有内置绑定。因此需要显式声明该目标来打包测试代码。

Maven Test的更多相关文章

  1. 【分享】标准springMVC+mybatis项目maven搭建最精简教程

    文章由来:公司有个实习同学需要做毕业设计,不会搭建环境,我就代劳了,顺便分享给刚入门的小伙伴,我是自学的JAVA,所以我懂的.... (大图直接观看显示很模糊,请在图片上点击右键然后在新窗口打开看) ...

  2. 理解Maven中的SNAPSHOT版本和正式版本

    Maven中建立的依赖管理方式基本已成为Java语言依赖管理的事实标准,Maven的替代者Gradle也基本沿用了Maven的依赖管理机制.在Maven依赖管理中,唯一标识一个依赖项是由该依赖项的三个 ...

  3. 【微框架】Maven +SpringBoot 集成 阿里大鱼 短信接口详解与Demo

    Maven+springboot+阿里大于短信验证服务 纠结点:Maven库没有sdk,需要解决 Maven打包找不到相关类,需要解决 ps:最近好久没有写点东西了,项目太紧,今天来一篇 一.本文简介 ...

  4. 安装eclipse的maven插件

    我们团队用maven来管理项目需要的库文件,其实以前都没听过maven,第一次接触这个,师兄要我直接去装下这个,开始以为还挺简单的,没想到中间遇到了一些小麻烦,现在把我成功安装maven的过程分享下, ...

  5. MAVEN学习-第一个Maven项目的构建

    MAVEN安装成功之后就可以进行项目的构建和管理了: 为什么要用maven进行项目的构建和管理? 对于初学者来说一个最直接的也是最容易里的优点在于JAR包的管理,相对于以前开发一个项目的时候我们需要用 ...

  6. Maven 代理设置

    在maven的安装目录下 %MAVEN_HOME%/conf/setting.xml 中进行设置 <proxies>    <!-- proxy     | Specificatio ...

  7. spring maven pom.xml设置

    spring pom.xml设置 <?xml version="1.0" encoding="UTF-8"?> <project xmlns= ...

  8. maven依赖查询地址

    http://search.maven.org/#search%7Cga%7C1%7C

  9. maven 中snapshot版本和release版本的区别

    maven中的仓库分为两种,snapshot快照仓库和release发布仓库.snapshot快照仓库用于保存开发过程中的不稳定版本,release正式仓库则是用来保存稳定的发行版本.定义一个组件/模 ...

  10. Maven多模块,Dubbo分布式服务框架,SpringMVC,前后端分离项目,基础搭建,搭建过程出现的问题

    现互联网公司后端架构常用到Spring+SpringMVC+MyBatis,通过Maven来构建.通过学习,我已经掌握了基本的搭建过程,写下基础文章为而后的深入学习奠定基础. 首先说一下这篇文章的主要 ...

随机推荐

  1. python类中super()和__init__()的区别

    class Base(object):     def __init__(self): print 'Base create' class childB(Base): def __init__(sel ...

  2. ASP.NET 教程(一)

    ASP.NET 是一个开发框架,用于通过 HTML.CSS.JavaScript 以及服务器脚本来构建网页和网站. ASP.NET 支持三种开发模式: Web Pages.MVC (Model Vie ...

  3. maven webjar构建及使用

    这么做的目的想要把前端静态文件,css啊js啊一堆的放在一个maven工程下管理,需要的时候调用jar包直接引用. 1.把要打包文件放到另外的maven项目的/src/main/resources下 ...

  4. hexo deploy出错的解决方法

    .ERROR Deployer not found: git 执行npm install hexo-deployer-git --save .$ hexo d INFO Deploying: git ...

  5. SpringMVC流程

    Spring工作流程描述 1. 用户向服务器发送请求,请求被Spring 前端控制Servelt DispatcherServlet捕获: 2. DispatcherServlet对请求URL进行解析 ...

  6. jquery validate表单验证插件

    1 表单验证的准备工作 在开启长篇大论之前,首先将表单验证的效果展示给大家.     1.点击表单项,显示帮助提示 2.鼠标离开表单项时,开始校验元素  3.鼠标离开后的正确.错误提示及鼠标移入时的帮 ...

  7. Python模块学习笔记

    1.作用域 私有private:用'_x'或'__xx'表示,如,_a,__ab; 公有public: 如 a,b; 特殊变量,可被直接引用,如:__author__,__name__,命名变量时一般 ...

  8. 关于HTML5、Jquery、Phonegap跨域问题的研究

    我的问题: 近期研究Phonegap的相关技术,遇到了服务资源访问的跨域.经过尝试使用服务器端的代理,Phonegap打包后不能够访问到相应资源.在搜索引擎的帮助下,找到了Jquery的jsonp的方 ...

  9. mysql数据库使用

    C#操作Mysql数据库的存储过程,网址 DATEDIFF() 函数返回两个日期之间的天数. 语法 DATEDIFF(date1,date2) date1 和 date2 参数是合法的日期或日期/时间 ...

  10. CentOS搭建VPN

    安装ppp #yum install ppp 安装pptpd 配置软件源,修改/etc/yum.repos.d/Doylenet.repo,如果系统没有该文件则创建 #vim /etc/yum.rep ...