maven 能够构建并自动执行 Jmeter 脚本,主要是依赖于 maven 插件 jmeter-maven-plugin
,插件地址和使用说明,github 地址,最新版本为 2.7.0 支持 Jmeter4.0,如果脚本中用到 Json 断言的必须用这个版本。
创建一个普通的 maven 工程,在pom.xml
配置jmeter-maven-plugin
的选项和功能,如下图按步骤创建
给工程起个名字
工程的src/test/
目录新建一个目录jmeter
,这个目录是存放 Jmeter 执行脚本的
配置jmeter-maven-plugin
,在pom.xml
文件的<build><plugins>
路径下添加以下配置,注意version
那里正常应该填写2.7.0
,这里有二次开发。
<plugin>
<groupId>com.lazerycode.jmeter</groupId>
<artifactId>jmeter-maven-plugin</artifactId>
<version>DEV-SNAPSHOT</version>
<executions>
<execution>
<id>jmeter-tests</id>
<phase>verify</phase>
<goals>
<goal>jmeter</goal>
<goal>configure</goal>
</goals>
</execution>
</executions>
<configuration>
<!--设置虚拟机XMS-->
<jMeterProcessJVMSettings>
<xms>2048</xms>
<xmx>2048</xmx>
</jMeterProcessJVMSettings>
<!-- 指定测试内容,可用正则匹配-->
<testFilesIncluded>
<jMeterTestFile>${jMeterTestFile}</jMeterTestFile>
</testFilesIncluded>
<jmeterExtensions>
<artifact>cn.yiapi:apitest:1.0-SNAPSHOT</artifact>
<artifact>mysql:mysql-connector-java:6.0.6</artifact>
</jmeterExtensions>
<propertiesJMeter>
<tcp.binarylength.prefix.length>4</tcp.binarylength.prefix.length>
</propertiesJMeter>
</configuration>
</plugin>
运行指定命令,打开项目配置选项,按下图配置脚本执行命令
在 IDEA 右侧选中 maven 工程选项,执行 verfy 或 install 选项,
执行成功时如下显示,注意配置参数的文件名中的*
号为通配符。
创建的 maven 工程除了用插件执行 Jmeter 脚本外,也可以创建 JAVA 类和方法,方便在 Jmeter 中调用,以下主要讲解如何编写和调用 JAVA 方法。
cn.yiapi.jmeterext
,创建一个 demo 类package cn.yiapi.jmeterext;
public class SumDemo {
public static int getSum(int a, int b) {
return a+b;
}
}
Sampler
上添加一个后置处理器BeanShell PostProcessor
,里面编写如下代码
java
import cn.yiapi.jmeterext.*;
int a=3;
int b=4;
int sum = SumDemo.getSum(a,b);
System.out.println("a+b="+sum);
jmeter-maven-plugin
属性里配置对整个项目的 JAR 依赖就可以在运行直接实时引用了,其实是在运行时工程 install 生成一个新包,插件再把生成的 JAR 依赖放到对应的引用目录,这里引用了工程自身的 JAR 包依赖和一个 mysql 的 JAR 包依赖。<jmeterExtensions>
<artifact>cn.yiapi:apitestdemo:1.0-SNAPSHOT</artifact>
<artifact>mysql:mysql-connector-java:5.1.40</artifact>
</jmeterExtensions>
重新执行mvn install
命令,查看文件执行结果,能正常显示结果即为正常
运行本地 Jmeter 时,只需要将上面的工程生成的 JAR 放入到 Jmeter 目录下的lib/ext
目录后重新启动 Jmeter 即可,而不需要利用 Jmeter 的函数模块写函数再一个一个引用那么麻烦了。
在本地执行 Jmeter 时如果你创建的类引用了其它 JAR 包同样需要把其它 JAR 包一起放到指定位置,也可以使用打包工具把所有依赖包打到一个包里。在 pom.xml 配置打包插件。
<plugin>
<artifactId> maven-assembly-plugin </artifactId>
<configuration>
<descriptorRefs>
<descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs>
<archive>
<manifest>
<mainClass>cn.yiapi.App</mainClass>
</manifest>
</archive>
</configuration>
<executions>
<execution>
<id>make-assembly</id>
<phase>package</phase>
<goals>
<goal>single</goal>
</goals>
</execution>
</executions>
</plugin>
在 Jenkins 里用 maven 执行时不需要把相互依赖的 JAR 都引入,但本地执行时需要把所有依赖包打到一个包里放到 Jmeter 的lib/ext
目录下,引入打包插件配置后会打成两个包,一个无依赖可以配给 pom.xml 里,一个有依赖的给本地 Jmeter 使用
本地工程相关的配置大概如上,下章主要讲述 Jenkins 持续集成相关的配置。