一、项目创建
使用Idea创建一个maven项目,maven模板选择空白,点击next直到项目创建成功
二、引入相关jar包
在工程的pom.xml文件中,引入jmeter二次开发所需要的jar包
<dependencies>
<dependency>
<groupId>org.apache.jmeter</groupId>
<artifactId>ApacheJMeter_core</artifactId>
<version>5.4.1</version>
</dependency>
<dependency>
<groupId>org.apache.jmeter</groupId>
<artifactId>ApacheJMeter_java</artifactId>
<version>5.4.1</version>
</dependency>
</dependencies>
三、快速开始
1、创建包名
在src/main/java 路径下创建包名为com.apache.jmeter.functions 包名前面可以随便取,但是结尾必须已functions结尾,否则无法被jmeter识别。
2、创建Java类
在functions包下创建一个Java类,名字可以随便取(尽量见名知意,遵守Java类驼峰命名规范),并继承AbstractFunction类,实现其execute、setParameters、getReferenceKey、getArgumentDesc 4个方法
3、方法介绍
execute方法: 核心方法,执行的核心逻辑全部写在该方法中
setParameters: 该方法用来接收和处理用户调该函数时所传递的参数值,如果定义的函数没有参数,则该方法可以为空
getReferenceKey: 该方法用于获取函数名称
getArgumentDesc: 该方法用于定义函数的参数,并且会将参数描述显示在GUI界面中
4、实例讲解
package com.apache.jmeter.functions;
import org.apache.jmeter.engine.util.CompoundVariable;
import org.apache.jmeter.functions.AbstractFunction;
import org.apache.jmeter.functions.InvalidVariableException;
import org.apache.jmeter.samplers.SampleResult;
import org.apache.jmeter.samplers.Sampler;
import java.util.Collection;
import java.util.LinkedList;
import java.util.List;
/**
* Created by YangWeiMin on 2021/10/18
*/
public class CalcGenerator extends AbstractFunction {
private static final String KEY = "__calc";
// 自定义函数的参数及其参数列表说明
private static final List<String> params = new LinkedList<>();
// 通过此add方法可以添加多个参数
static {
params.add("请输入计算类型, add或者minus");
params.add("请输入第一个数");
params.add("请输入第二个数");
}
// 定义全局变量用于接收参数值
public int x;
public int y;
public String type = "";
@Override
public String execute(SampleResult previousResult, Sampler currentSampler) throws InvalidVariableException {
if (type.equals("add")) {
return String.valueOf(x + y);
}
if (type.equals("minus")) {
return String.valueOf(x - y);
}
return "计算类型异常,请重新输入";
}
@Override
public void setParameters(Collection<CompoundVariable> parameters) throws InvalidVariableException {
checkMinParameterCount(parameters, 3); // 检测用户在调用该函数时所传参数最少是否为3个
Object[] values = parameters.toArray(); // 定义一个数组values用来存储用户的参数
type = ((CompoundVariable) values[0]).execute();
x = Integer.parseInt(((CompoundVariable) values[1]).execute());
y = Integer.parseInt(((CompoundVariable) values[2]).execute());
}
@Override
public String getReferenceKey() {
return KEY;
}
@Override
public List<String> getArgumentDesc() {
return params;
}
}
其中定义了全局变量KEY,该变量的作用是定义函数的名字,该KEY在getReferenceKey方法进行返回即可
定义全局变量params,设置函数所需要的参数用于展示在jmeter中,该部分写在static 静态代码块中,并在getArgumentDesc中进行返回即可
5、编译打包
自定义函数的具体实现逻辑写好以后,可以通过Idea中的maven工具进行打包,双击verify即可打包,打包成功后,会在target目录中看到生成的jar包
5、上传Jmeter并使用
将打好的jar包放入到jmeter下 lib\ext目录中,放好以后,打开jmeter工具,选择函数助手,找到自定义编写的函数名,即可使用