推行 ReadyAPI/Soapui 这半年来,在团队中实践效果还是不错的。最近想整合到Jenkins中,做好持续集成的工作。在啃官方文档的时候,还是踩了一些坑,便有了此文。
# 全过程介绍
-
安装 maven
-
下载soapui-pro-maven-plugin-5.1.2.jar 这是目前最新版本:
http://smartbearsoftware.com/repository/maven2/com/smartbear/soapui/soapui-pro-maven-plugin/
-
用命令安装插件包:mvn install:install-file -Dfile=/Users/applewu/Downloads/soapui-pro-maven-plugin-5.1.2.jar -DgroupId=com.smartbear.soapui -DartifactId=soapui-pro-maven-plugin-5.1.2.jar -Dpackaging=jar -Dversion=5.1.2;
-
为你的 soapui 项目准备相应的 pom.xml,保证 pom.xml 与 soapui 项目文件在同一目录下。pom.xml 格式参考官网:http://www.soapui.org/test-automation/maven/maven-2-x.html
-
命令运行 soapui 项目: mvn com.smartbear.soapui:soapui-pro-maven-plugin:5.1.2:test
# 踩过的坑
过程看起来很简单,如果你有了基础的maven知识,在前三步根本就没有问题,你会如愿地看到本地的maven库中已经下载了相关的jar包 (我的mac默认路径是:/Users/applewu/.m2/repository/)。咱们主要谈谈第4,5步。
## pom.xml 造成的坑
官网上有一个所谓的 full example,但你需要透彻地理解pom.xml与soapui项目之间的对应关系。你需要更新的字段有:
-
project/groupId:取一个你认为有意义的命名-组织名
-
project/artifactId:这个必须是你要执行的soapui项目的名称,比如文件名是Demo4SoapuiMaven-soapui-project.xml,那么artifactId就是Demo4SoapuiMaven
-
project/name:取一个你认为有意义的命名-测试名
-
project/url: 可以删掉
-
plugin/version:你想用哪个插件版本就写哪个,最新是5.1.2
-
plugin/executions/execution/configuration/projectFile: 待运行的soapui文件全名,如Demo4SoapuiMaven-soapui-project.xml
pom.xml如果有误,会直接影响 maven 的运行结果。如果你用的是ReadyAPI,还可能会遇到 NoClassDefFoundError: org/reflections/Configuration;那么你需要在plugin节点中加入:
```xml
<dependencies>
<dependency>
<groupId>org.reflections</groupId>
<artifactId>reflections</artifactId>
<version>0.9.9-RC1</version>
</dependency>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
<version>3.10-FINAL</version>
</dependency>
</dependencies>
```
官网说明 http://readyapi.smartbear.com/readyapi/integration/maven/maven2
## 一行命令挖下的坑
第5步就是一个命令,哪来什么坑呢?而这才是最让我恶心的。大家都知道soapui有免费版和pro收费版,然而在readyapi 和 soapui的官网,full example 是以 pro 版本为例的,而 running tests 这一节中,又是以 免费版为例,做出的说明。即:mvn com.smartbear.soapui:soapui-maven-plugin:4.6.1:test
即便你在pom.xml 中定义的插件是soapui-pro-maven-plugin,但由于你在执行命令的时候,是照着官网文档,用soapui-maven-plugin,所以maven还是以免费版的soapui去执行你的脚本。这很容易让人困惑,因为你本地根本没有免费版的soapui,免费版和收费版的soapui从外观上就明显不一样,安装文件都是两套,不仅仅是active licenese的问题。
当然,如果你的soapui脚本中并没有用到pro版本的特性,比如json path assertion什么的,那么你体会不到有什么不同。否则,你照着官网文档的命令运行之后,soapui脚本会出现大面积 Errors,新手就难以理解了,因为抛出脚本的异常,而不是maven的异常,但其实脚本在你本地的soapui pro,用test runner运行一点儿问题也没有...