Maven使用failsafe实现集成测试

使用mock之后单元测试可以完全不依赖外界环境,比如database(一般使用hsqldb in memory db来实现database测试,mock db太麻烦了),ftp server,web service或者其他的功能模块。Mock测试带来的问题就是各个类,模块之间的集成测试完全没有做,这个时候就需要集成测试。单元测试maven有surefire插件实现自动化,集成测试则有failsafe plugin。

Failsafe和maven结合,将整个集成测试分为4个阶段:

1. pre-integration-test 启动测试环境,比如通过容器插件cargo启动容器,加载应用

2. integration-test 执行集成测试用例,

3. post-integration-test 清理测试环境

4. verify 检测测试结果

其中pre/post integration test主要是负责启动应用和测试后停止应用,一般通过容器插件,jetty plugin, tomcat plugin 或者高级点的cargo plugin来实现。2和4歩则是由failsafe来实现。

1,3歩的实现可以参考我之前的bloghttp://blog.csdn.net/cloud_ll/article/details/39831323

之所以选择cargo是它可以加载命令行参数,这样就可以通过jacoco来统计测试覆盖率,tomcat plugin就无法做到这一点。

2,4歩failsafe配置如下,主要是找到test文件夹下所有 “/ITCase.java”,”/IT.java” 和”**/*IT.java” 测试用例。如果测试用例有其他的特征,可以通过在configuration节点Include/exclude来实现。具体可以参考failsafe的官方文档:https://maven.apache.org/surefire/maven-failsafe-plugin/

    <pluginManagement>
      <plugins>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-failsafe-plugin</artifactId>
          <version>2.18.1</version>
          <executions>
            <execution>
              <id>integration-test</id>
              <goals>
                <goal>integration-test</goal>
              </goals>
            </execution>
            <execution>
              <id>verify</id>
              <goals>
                <goal>verify</goal>
              </goals>
            </execution>
          </executions>
        </plugin>
      </plugins>
    </pluginManagement>

Note: 集成用例如果和单元测试用例放在同一个项目里,必须在在单元测试的surefire中exclude所有的集成测试用例。

时间: 2024-11-10 13:32:02

Maven使用failsafe实现集成测试的相关文章

Maven实现Web应用集成测试自动化 -- 部署自动化(WebTest Maven Plugin)

上篇:Maven实现Web应用集成测试自动化 -- 测试自动化(WebTest Maven Plugin) 之前介绍了如何在maven中使用webtest插件实现web的集成测试,这里有个遗留问题,就是在执行maven的intergation测试时候web应用已经部署在容器中处于in service的状态,那么web应用的部署是否可以自动化呢?在我们公司的系统中,由于使用了weblogic的cluster,自己写了脚步来实现部署,花费了不少人力物力,其实java web应用早就有福音了,是一款自

maven执行单元和集成测试

单元测试是对最小单元即方法的测试,要隔离对他模块的依赖,一般采用stub和mock两种方式. 1.集成测试 集成测试是对功能的测试,对于大部分web模块来说需要启动web容器,进行集成测试 maven生命周期中已经包含测试(test)和集成测试(integration-test),但未对两种测试代码做区分,需要自己解决启动web容器和代码区分问题. 2.设置maven jetty插件自启动 首先配置maven jetty插件在集成测试阶段自动启动 <plugin> <groupId>

学习笔记——Maven实战(五)自动化Web应用集成测试

自动化集成测试的角色 本专栏的上一篇文章讲述了Maven与持续集成的一些关系及具体实践,我们都知道,自动化测试是持续集成必不可少的一部分,基本上,没有自动化测试的持续集成,都很难称之为真正的持续集成.我们希望持续集成能够尽早的暴露问题,但这远非配置一个 Hudson/Jenkins服务器那么简单,只有真正用心编写了较为完整的测试用例,并一直维护它们,持续集成才能孜孜不倦地运行测试并第一时间报告问题. 自动化测试这个话题很大,本文不想争论测试先行还是后行,这里强调的是测试的自动化,并基于具体的技术

Maven提高篇系列之(二)——配置Plugin到某个Phase(以Selenium集成测试为例)

这是一个Maven提高篇的系列,包含有以下文章: Maven提高篇系列之(一)——多模块 vs 继承 Maven提高篇系列之(二)——配置Plugin到某个Phase(以Selenium集成测试为例) Maven提高篇系列之(三)——使用自己Repository(Nexus) Maven提高篇系列之(四)——使用Profile Maven提高篇系列之(五)——处理依赖冲突 Maven提高篇系列之(六)——编写自己的Plugin(本系列完) 持续交付要“自动化所有东西”,对于集成测试也是一样.集成

jenkins + git+maven做持续集成测试版本控制(未完成版)

1.安装maven 下载http://mirror.bit.edu.cn/apache/maven/maven-3/3.3.3/binaries/apache-maven-3.3.3-bin.zip (1)改名 apache-maven-3.0.4移动到/usr目录的时候,我会把其改名为maven,这是为了方便使用. (2)修改环境变量: vi /etc/profile #maven export MAVEN_HOME=/usr/local/maven export PATH=${MAVEN_H

Git+Spring-boot+Docker+ Maven +Registry私有仓库 +jenkins 持续集成测试

转自: http://blog.csdn.net/lsgqjh/article/details/72597786

Maven学习之 插件plugin

Maven本质上是一个执行插件的框架.插件共分两类:build插件和reporting插件. build插件,会在build阶段被执行,应该配置在POM的<build/>元素中. reporting插件,生成站点的时候会执行,应该配置在POM的<reporting/>元素中.因为reporting插件的结果是生成的站点的一部分,所以这种插件应该是国际化和本地化的.此处更多详见 http://maven.apache.org/plugins/localization.html. 但所

从零开始学OpenDaylight之四:Maven工具

 一.写在前面 小公司启动开发新项目的做法:项目经理从团队抽调1名开发人员进行项目工程框架的搭建,剩余的开发人员先研究项目需求,并着手准备业务逻辑的设计.本地项目工程搭建后,上传SVN或git配置库,告知其他开发人员可以下载项目工程,启动开发了.开发人员将项目工程导入到IDE(Eclipse)中,进行代码的编写.编译.测试以及打包等操作,本地代码确认无误后,上传配置库. 从公司的现实考量,做好一个项目的时间越短,带来的市场空间和效益就有优势.这就要求除业务逻辑翻译的代码必须人工来做外(这里也有部

Maven基础知识

本人博客文章网址:https://www.peretang.com/basic-knowledge-of-maven/ Maven简介 Maven , 用于Java项目的构建 , 依赖管理 , 项目信息管理的项目管理工具. 是Apache组织旗下的开源项目. Maven核心功能是一个具有跨平台特性的构建工具 , 帮助我们自动化构建 , 并提供一个完整的优化的构建生命周期模型 , 和构建任务所需的基础组件/插件. Maven还是一个依赖管理工具和项目信息管理工具 , 方便开发人员更好的管理依赖与避