cargo maven_用于集成测试的Maven Cargo插件

cargo maven

在项目生命周期中,非常普遍的需求是设置集成测试。

幸运的是,Maven在默认构建生命周期的以下阶段(来自Maven 文档 )具有对这一确切方案的内置支持:

  • 集成前测试执行集成测试之前所需的操作。 这可能涉及诸如设置所需环境的事情。
  • 集成测试如有必要,将程序包处理并部署到可以运行集成测试的环境中。
  • 集成测试后执行集成测试后执行所需的操作。 这可能包括清理环境。

首先,配置了maven-surefire-plugin ,以便从标准构建生命周期中排除集成测试

<plugin><groupId>org.apache.maven.plugins<groupId><artifactId>maven-surefire-plugin<artifactId><version>2.10<version><configuration><excludes><exclude>***IntegrationTest.java<exclude><excludes><configuration><plugin>

排除是通过蚂蚁风格的路径表达式完成的,因此所有集成测试都必须遵循此模式,并以“ IntegrationTest.java ”结尾。

接下来,使用cargo-maven2-plugin ,因为Cargo提供了对嵌入式Web服务器的顶级支持。 当然,如果服务器环境需要特定的配置,货运也知道如何从已归档的软件包中构造服务器以及如何部署到外部服务器。

<plugin><groupId>org.codehaus.cargo<groupId><artifactId>cargo-maven2-plugin<artifactId><version>1.1.3<version><configuration><wait>true<wait><container><containerId>jetty7x<containerId><type>embedded<type><container><configuration><properties><cargo.servlet.port>8080<cargo.servlet.port><properties><configuration><configuration><plugin>

定义了一个嵌入式Jetty 7 Web服务器,侦听端口8080。请注意,将等待标记设置为true –这是因为对于较新版本的货物(1.1.0以上),该标记的默认值已从更改为由于此错误 ,从truefalse 。 我们希望能够通过简单地运行mvn cargo:start来启动项目,尤其是在开发阶段,因此该标志应该处于活动状态。 但是,在运行集成测试时,我们希望服务器启动,先运行测试再停止,这就是为什么该标志以后会被覆盖的原因。

为了使 maven阶段生成可部署的war文件,项目的打包必须为: <packaging> war </ packaging>

接下来, 创建一个新的集成 Maven配置文件 ,以在该配置文件处于活动状态时才允许运行集成测试,而不是将其作为标准构建生命周期的一部分。

<profiles><profile><id>integration<id><build><plugins>...<plugins><build><profile><profiles>

该配置文件将包含所有其余配置。

现在,Jetty服务器已配置为在集成前测试阶段启动 ,并在集成后 测试阶段停止

<plugin><groupId>org.codehaus.cargo<groupId><artifactId>cargo-maven2-plugin<artifactId><configuration><wait>false<wait><configuration><executions><execution><id>start-server<id><phase>pre-integration-test<phase><goals><goal>start<goal><goals><execution><execution><id>stop-server<id><phase>post-integration-test<phase><goals><goal>stop<goal><goals><execution><executions><plugin>

这样可以确保在集成测试阶段之前和之后都执行cargo:start目标和cargo:stop目标。 请注意,因为有两个单独的执行定义,所以id元素必须在两个元素中都存在(并且不相同),以便Maven可以接受配置。

接下来,需要在集成配置文件中覆盖maven-surefire-plugin配置,以便现在将包含并运行默认生命周期中排除的集成测试:

<plugins><plugin><groupId>org.apache.maven.plugins<groupId><artifactId>maven-surefire-plugin<artifactId><executions><execution><phase>integration-test<phase><goals><goal>test<goal><goals><configuration><excludes><exclude>none<exclude><excludes><includes><include>***IntegrationTest.java<include><includes><configuration><execution><executions><plugin><plugins>

有几件事值得注意:

1. Maven-surefire-plugin测试目标是在集成测试阶段执行的; 至此,Jetty已经开始部署项目,因此集成测试应该没有问题。

2.现在,集成测试包含在执行中。 为了实现这一点,排除项也被覆盖-这是因为Maven处理配置文件中的覆盖插件配置的方式。 基本配置没有被完全覆盖,而是在配置文件中增加了新的配置元素。 因此,最初排除集成测试的原始<excludes>配置仍然存在于配置文件中,并且需要被覆盖,否则它将与<includes>配置冲突并且测试仍然不会跑。

3.请注意,由于只有一个<execution>元素,因此不需要定义id

现在,整个过程可以运行:

mvn clean install -Pintegration

结论

Maven的分步配置涵盖了整个集成过程的设置过程,该集成过程是项目生命周期的一部分。

通常,将其设置为在持续集成环境中运行,最好在每次提交之后运行。 如果CI服务器已经有运行和使用端口的服务器,那么货物配置将必须处理该情况,我将在以后的文章中介绍。

参考: 如何在baeldung博客上使用我们的JCG合作伙伴 Eugen Paraschiv 的Maven Cargo插件设置集成测试 。


翻译自: https://www.javacodegeeks.com/2012/09/maven-cargo-plugin-for-integration.html

cargo maven

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/354022.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

linux菜单系统,Linux修改grub菜单

1. 保留上一次 grub 菜单选项1.1 问题每次开机时&#xff0c;大部分 Linux 发行版的 grub 菜单都是定位在首选项位置(即当前系统选项位置)。这就导致如果我们电脑安装了多个系统&#xff0c;那么每次开机进入其他系统都要重新选择 grub 菜单选项。而我们一般都是一段时间固定使…

zookeeper zoo.cfg配置文件

一、zookeeper的配置文件 zoo.cfg 配置文件是我们安装zookeeper的时候复制 重命名出来的文件命令&#xff1a; cp zoo_smaple.cfg zoo.cfgzkServer.sh 获取执行进入zookeeper 查看配置文件cd /myapp/zookeeper/conf执行命令 查看配置文件信息命令&#xff1a;vim zoo.cfg这是…

与Spring和Maven签订合约优先SOAP服务

1.简介 在本教程中&#xff0c;我们将学习使用JAX-WS&#xff0c;Spring和Maven实施合同优先的SOAP服务应用程序。 这是使用合同优先还是代码优先方法的更多设计决定。 在开发基于SOAP的Web服务应用程序时使用应用合同优先的方法最显着的好处是&#xff0c;可以在对合同进行必…

linux 下c内存管理,linux内存管理之malloc

对于内核的内存管理&#xff0c;像kmalloc&#xff0c;vmalloc&#xff0c;kmap&#xff0c;ioremap等比较熟悉。而对用户层的管理机制不是很熟悉&#xff0c;下面就从malloc的实现入手.( 这里不探讨linux系统调用的实现机制. ) ,参考了《深入理解计算机系统》和一些网上的资料…

jqGrid 常用方法

方法名参数返回值说明addJSONDatadatanone使用传来的data数据填充表格。使用方法&#xff1a; var mygrid jQuery(”#”grid_id)[0]; var myjsongrid eval(”(”jsonresponse.responseText”)”); mygrid.addJSONData(myjsongrid); myjsongrid null; jsonresponse null;addR…

新生必会的linux命令,jstat命令详解

导读Jstat是JDK自带的一个轻量级小工具。全称“Java Virtual Machine statistics monitoring tool”&#xff0c;它位于java的bin目录下&#xff0c;主要利用JVM内建的指令对Java应用程序的资源和性能进行实时的命令行的监控&#xff0c;包括了对Heap size和垃圾回收状况的监控…

基于jsf的项目_JSF基于事件的交流:新派方法

基于jsf的项目在上一篇文章中 &#xff0c;我们学习了基于Observer / Event Listener和Mediator模式的基于事件的通信。 由于它们的缺点&#xff0c;我想展示基于事件的通信的更有效方法。 我们将从Google Guava EventBus开始&#xff0c;最后以CDI &#xff08;Java EE平台的上…

linux 天文软件,新闻|开源新闻速递:天文软件 Stellarium 0.15.0 发布

今日关注Stellarium 0.15.0 发布。这是一款全世界最棒的免费、开源、跨平台的天文软件应用&#xff0c;用户可以通过该软件来观看实时的星星、行星还有星云。最新版本进行了非常多的功能完善&#xff0c;修复了若干bug&#xff0c;新增了许多新特性。比如更新了AstroCalc工具&a…

linux javaweb环境单价,linux(centos)下Java Web环境开发

一、安装jdk百度搜索jdk&#xff0c;进入http://www.oracle.com/technetwork/java/javase/downloads/index.html找到自己需要版本的jdk的Linux压缩包&#xff1b;复制出这个压缩包的下载地址(尽量先点击下载&#xff0c;然后在下载的界面复制出资源的链接)在服务器的合适位置创…

带有Java Util日志记录的Java 8延迟调用

在博客文章“在Log4j2中更好地执行非日志记录器调用”中 &#xff0c;我介绍了可以在Log4j 2中使用的方法&#xff0c;这些方法可以减少或避免在基于指定日志级别实际上根本未记录的日志语句中调用方法。 作为讨论的一部分&#xff0c;我介绍了Log4j 2对使用lambda表达式的基于…

python对象分类

1 python对象分类 所有的Python对象都拥有三个特性&#xff1a;身份&#xff0c;类型和值 身份&#xff1a; 每一个对象都有一个唯一的身份标识自己。任何对象的身份可以使用内建函数id()来得到。这个值可以被认为是该对象的内存地址类型&#xff1a; 对象的类型决定了对象可以…

怎样用u盘linux安装ntp协议,电脑中怎么配置NTP服务

NTP服务器是用来使计算机时间同步化的一种协议&#xff0c;可提供高精准度的时间校正&#xff0c;而且能通过加密确认来防止恶毒的协议攻击。下面让学习啦小编为大家介绍如何在电脑中配置NTP服务来实现局域网内设备的时间同步。电脑中怎么配置NTP服务1、先关闭Windows系统自带的…

SetGID 权限

一、SetGID针对文件的作用 1、只有可执行的二进制程序才能设置SGID权限 2、命令执行者要对该程序拥有 x &#xff08;执行&#xff09;权限 3、命令执行在执行程序的时候&#xff0c;组身份升级为该程序的属组 4、SetGID权限同样只在该程序执行过程中有效&#xff0c;也就是说组…

nosql的数据服务_使用NoSQL实现实体服务–第2部分:合同优先

nosql的数据服务现在该开始使用NoSQL项目对SOA实体服务进行编码了&#xff0c;并且正如我所承诺的&#xff0c;我将从Web服务的合同开始。 看一下本系列的第1部分 。 这种从Web服务合同定义开始的技术是面向服务的体系结构实现的“合同优先”方法的核心&#xff0c;并具有许多技…

weblogic双机热备部署linux,WebLogic应用在集群环境下的一些基本知识【转载】

4.2.1 基本概念1&#xff0e;硬件的cluster和WebLogic的cluster不是一回事&#xff0c;硬件做的是冷备份&#xff0c;对用户的session&#xff0c;用户请求的负载均衡等的处理是做不到 的&#xff0c;而且一般硬件的双机热备也不是时时的备份&#xff0c;而是间隔一段时间再将主…

vmware中centos6.4突然无法进入图形界面解决方法

今天遇到vmvare中centos6.4进度条走完了仍然没有进入图形界面&#xff0c;在网上找到了解决方法记录如下&#xff1a; 1. 按CtrlAltF5并输入root账号密码进入命令界面 2. vim /etc/inittab 打开/etc/inittab文件&#xff0c;并将文件最后id:5改为id:3&#xff0c;即将运行等级…

教程:正确的SLF4J日志记录用法以及如何检查它

SLF4J是一个非常流行的日志记录外观&#xff0c;但是&#xff0c;就像我们使用的所有库一样&#xff0c;我们有可能以错误的方式或至少以非最佳方式使用它。 在本教程中&#xff0c;我们将列出常见的日志记录错误以及如何使用FindBugs检测到它们。 我们还将在相关时提及PMD和S…

linux逐行扫描,FFmpeg怎么区分识别视频是逐行扫描还是隔行扫描

最近遇到要识别隔行扫描的视频加以特殊转码处理的问题。google了一番以后找到两个解决的方式&#xff0c;记录一下。方法一&#xff1a;使用隔行扫描检查滤镜idet区分隔行扫描和逐行扫描ffmpeg -filter:v idet \ -frames:v 100 \ -an \ -f rawvideo -y /dev/null \ -i 351.mp4 …

JDBC学习笔记 day1

JDBC的基本概念&#xff1a; JDBC就是java database connectivity&#xff0c;即java数据库连接。 JDBC主要完成的几个任务分别为 与数据库建立一个连接  向数据库发送SQL语句  处理数据库返回的结果JDBC的作用&#xff1a; 将java程序语言编写出来的程序&#xff0c;与数据…

稀疏矩阵的转置c语言程序,程序有问题求大神,稀疏矩阵转置

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼#include #define N 100typedef int DataType;typedef struct{int i,j;DataType v;}TriTupleNode;typedef struct{TriTupleNode data[N];int m,n;int t;}TriTupleTable;void TransMatrix(TriTupleTable *b,TriTupleTable *a);void …