上篇:Maven实现Web应用集成測试自己主动化 -- 測试自己主动化(WebTest Maven Plugin)

之前介绍了怎样在maven中使用webtest插件实现web的集成測试,这里有个遗留问题,就是在运行maven的intergation測试时候web应用已经部署在容器中处于in service的状态,那么web应用的部署能否够自己主动化呢?在我们公司的系统中,因为使用了weblogic的cluster,自己写了脚步来实现部署,花费了不少人力物力,事实上java web应用早就有福音了,是一款自己主动安装容器和部署应用的插件神器:cargo-maven2-plugin,这插件能够兼容全部眼下主流的server如jboss、tomcat、glassfish、jetty等。

它的配置非常easy,在build里面增加cargo-maven2-plugin,为了实现集成測试自己主动化,声明集成測试阶段之前调用cargo:start启动容器和部署应用,集成測试结束后调用cargo:stop关闭容器。默认start启动的容器在maven生存周期结束之后就会结束,有时候为了调试方便,能够调用cargo:run来启动容器和部署应用,在须要的时候再通过Ctrl+C结束容器执行。

为了实现容器启动和部署自己主动化,还须要提供一些配置參数给插件,以下给出个演示样例,Cargo还有非常多其他的功能,详细能够參考:Cargo自己主动部署官方站点

                     <plugin>
<groupId>org.codehaus.cargo</groupId>
<artifactId>cargo-maven2-plugin</artifactId>
<version>${project.cargoPluginVersion}</version>
<configuration>
<!-- 定义container -->
<container>
<!-- container类型 jetty/tomcat/weblogic/jboss etc -->
<containerId>${project.cargo.container}</containerId>
<!-- 指定容器下载路径,保存路径,解压路径,放在target文件夹能够在clean的时候自己主动清除-->
<zipUrlInstaller>
<url>${project.cargo.container.url}</url>
<downloadDir>${project.build.directory}/${project.cargo.container}/downloads</downloadDir>
<extractDir>${project.build.directory}/${project.cargo.container}/extracts</extractDir>
</zipUrlInstaller>
<!-- cargo log 存储 -->
<log>${project.build.directory}/logs/cargo.log</log>
<!-- container log 存储 -->
<output>${project.build.directory}/logs/container.out</output>
</container>
<!-- 加入container相关的配置信息 -->
<configuration>
<!-- 设置deploy home -->
<home>${project.build.directory}/${project.cargo.container}/container</home>
<!-- <type>existing</type> existing type是使用已有的容器,在开放环境中使用,集成測试
一般使用默认的install type,每次又一次创建全部资源,保证每次測试环境OK,另一种
远程部署runtime type (见以下凝视),方便远程部署測试-->
<properties>
<!-- -->
<project.cargo.hostname>${project.cargo.host}</project.cargo.hostname>
<cargo.servlet.port>${project.cargo.port}</cargo.servlet.port>
<cargo.servlet.uriencoding>${project.build.sourceEncoding}</cargo.servlet.uriencoding>
<!--
为了防止和环境中其它节点冲突,能够设置容器专门属性,
<cargo.tomcat.ajp.port>8123</cargo.tomcat.ajp.port>
<cargo.tomcat.manager.protocol>http</cargo.tomcat.manager.protocol>
<cargo.tomcat.manager.hostname>127.0.0.1</cargo.tomcat.manager.hostname>
<cargo.tomcat.manager.port>8080</cargo.tomcat.manager.port>
<cargo.tomcat.manager.username>admin</cargo.tomcat.manager.username>
<cargo.tomcat.manager.password>1234</cargo.tomcat.manager.password> -->
</properties>
<!-- for remote deploy, also container type should be remote
<type>runtime</type>
<properties>
<cargo.remote.username>username</cargo.remote.username>
<cargo.remote.password>password</cargo.remote.password>
</properties> -->
</configuration>
<pre> <!-- 须要部署的应用配置 -->
<deployables>
<deployable>
<!-- group/artifact使用默认值部署本应用,默认从maven output获取部署包,能够在location中指定
<groupId>war group id</groupId>
<artifactId>war artifact id</artifactId>
<location> war location</location>
-->
<type>war</type>
<properties>
<context>optional root context</context>
</properties>
<pingURL>optional url to ping to know if deployable is done or not</pingURL>
<pingTimeout>optional timeout to ping (default 20000 milliseconds)</pingTimeout>
</deployable>
</deployables>
<!-- 定义打包路径 -->
<packager>
<outputLocation>${project.build.directory}/packaged</outputLocation>
</packager>
</configuration>
<executions>
<!--为了完毕集成測试,在開始集成測试之前启动容器和部署应用 -->
<execution>
                               <id>start-container</id>
                               <phase>pre-integration-test</phase>
                               <goals> <goal>start</goal> </goals>
                           </execution>
                           <!--測试完毕后,关闭容器 -->
                           <execution>
                               <id>stop-container</id>
                               <phase>post-integration-test</phase>
                               <goals> <goal>stop</goal> </goals>
                           </execution>
                           <!--关闭容器后打包容器留作日后分析 -->
                          <execution>
                               <id>package-container</id>
                               <phase>post-integration-test</phase>
                               <goals> <goal>package</goal> </goals>
                           </execution>
                         </executions>
                      </plugin>

Maven实现Web应用集成測试自己主动化 -- 部署自己主动化(WebTest Maven Plugin)的更多相关文章

  1. Maven实现Web应用集成測试自己主动化 -- 測试自己主动化(WebTest Maven Plugin)

    近期在appfuse看到使用webtest-maven-plugin实现Web应用的集成測试,研究了下.感觉很不错.对于Web应用自己主动构建很有帮助,在性能測试之前能够保证Web应用的基本功能工作正 ...

  2. Maven实战(五)——自己主动化Web应用集成測试

    自己主动化集成測试的角色 本专栏的上一篇文章讲述了Maven与持续集成的一些关系及详细实践,我们都知道,自己主动化測试是持续集成不可缺少的一部分,基本上,没有自己主动化測试的持续集成,都非常难称之为真 ...

  3. PAAS平台的web应用性能測试与分析

    引言 为什么我会写这一篇博客,由于近期非常多京东云擎jae的用户反应一个问题就是他们部署在jae上面的应用訪问非常慢,有极少数应用甚至常常出现504超时现象.当然大家首先想到的是jae性能太差,这也是 ...

  4. 屏幕測试亮点,新买了一个显示器,使用web简单的測试下了亮点

    1,购买了一个新的显示器 趁着双11的时候价格廉价.入手了一个显示器. http://serve.netsh.org/pub/dead_pixel.bin 滚动下就能够换颜色了.把chrome最大化, ...

  5. 移动測试技术保护源码!解码全球首款移动端白盒測试工具ThreadingTest (文章转自己主动点科技)

    作者 智晓锋 - 2014/07/14 自从斯诺登曝光美监听丑闻事件之后,我国政府就将信息安全问题上升到了国家安全的高度.基于此.国内的一家创业公司推出了智能型Android真机白盒測试以及开发辅助类 ...

  6. 用python做自己主动化測试--对server端的自己主动化測试(3)-很多其它http client实例

    上一篇中仅仅是实现了一个非常easy的http client功能,request还提供了keep alive, SSL, 多文件上传,cookie 管理功能,http requests头管理等丰富的功 ...

  7. Android Gradle Plugin指南(四)——測试

    原文地址:http://tools.android.com/tech-docs/new-build-system/user-guide#TOC-Testing 5.Testing(測试) 构建一个測试 ...

  8. UnityTestTools測试工具

    由于工作关系,要了解Unity上的測试工具,该工具基于Nunit框架.通过查阅资料了解到在Unity5.3中做出了一些改变,自带的仅仅剩下单元測试工具,假设想用其它的工具比方断言.集成測试,就须要前往 ...

  9. 菜鸟学Java(十九)——WEB项目測试好帮手,Maven+Jetty

    做WEB开发,測试是一件非常费时间的事情.所以我们就应该用更简单.更快捷的方式进行測试.今天就向大家介绍一个轻量级的容器--jetty.j今天说的etty是Maven的一个插件jetty-maven- ...

随机推荐

  1. jquery 三种开始写法

    在 jquery 代码中使用 $(document).ready()时,位于其中的所有代码都会在 DOM 加载后立即执行 第一种(推荐)$(document).ready(function(){   ...

  2. TensorFlow和最近发布的slim

    笔者将和大家分享一个结合了TensorFlow和最近发布的slim库的小应用,来实现图像分类.图像标注以及图像分割的任务,围绕着slim展开,包括其理论知识和应用场景. 之前自己尝试过许多其它的库,比 ...

  3. iscroll横向滑动(当前页状态标记自动变化)

    var myScroll; function loaded(){ myScroll = new iScroll('wrapper',{ snap:true, checkDOMChanges:true, ...

  4. php中遇到include_path='.;C:\php5\pear'的错误

    所有面页,包括空白的都会报类似下面的错误. Warning: Unknown: failed to open stream: No such file or directory in Unknown  ...

  5. Xcode-程序开发设计-02九宫格

    行号是除 决定Y值 列号是余 决定X值 // // ViewController.m // 06-应用管理 // // Created by daier on 15/12/31. // Copyrig ...

  6. Abstract Factory

    工厂模式比较好理解,其实就是通过访问工厂返回单一的对象/多个对象.那么抽象工厂就是返回多个抽象对象.这意味工厂返回对象纵向的一个扩展.但是很多时候,抽象工厂是两个维度的扩展,比方说在数据库类型和表对象 ...

  7. bzoj 2152: 聪聪可可 树的点分治

    2152: 聪聪可可 Time Limit: 3 Sec  Memory Limit: 259 MBSubmit: 485  Solved: 251[Submit][Status] Descripti ...

  8. BZOJ 3672 购票

    Description 今年夏天,NOI在SZ市迎来了她30周岁的生日.来自全国\(n\)个城市的OIer们都会从各地出发,到SZ市参加这次盛会. 全国的城市构成了一棵以SZ市为根的有根树,每个城市与 ...

  9. 在XP系统中自带的 msvcrt.dll 和 Vista 中的 msvcrt.dll 版本不同,导致抛出的异常不同

    然而,在XP系统中,系统自带的 msvcrt.dll 和 Vista 中的 msvcrt.dll 版本不同, 并没有这个 _except_handler4_common ,结果就出现了启动程序时,遇到 ...

  10. 【HDOJ】1421 搬寝室

    DP.这题都能TLE,发现memset有时居然比for还要慢. #include <stdio.h> #include <stdlib.h> #include <stri ...