Jmeter 二次开发-自定义函数
** Jmeter 自定义函数
1. 新建 package,以 functions 为结尾;jmeter.properties 中 classfinder.functions.contain=.functions
2. eclipse or IDEA 中 lib 文件夹,复制 ApacheJMeter_core.jar 和 ApacheJMeter_functions.jar 到次
目录;
eclipse: 右键 lib folder -> build path -> configure build path -> Libraries ->add jars -> 选中lib 中的jar 点 OK 即可;
IDEA: add to libraries 即可;
3. 新建 class 文件,Superclass= org.apache.jmeter.functions.AbstractFunction, 新建文件会在自动生成一个名为 org.apache.jmeter.functions 的包下; ---注意,如果不是这个包名,可能jar 放到lib\ext 文件夹下后,不起效果
4.重写以下 4个方法:
public String s1 = "";
public String s2 = "";
@Overrider
public List<String> getArgumentDesc(){
//自定义函数参数列表
List<String> parms = new LinkedList<String>();
parms.add("第一个参数请输入年份");
parms.add("第二个参数请输入性别");
return parms;
}
@Override
public void setParameters (Collection<CompoundVariable> collection) throw InvalidVariableException{
//用来接受、处理用户调用函数是所输入的参数值
//collection 为 getArgumentDesc 函数接受到的用户输入值
//检查用户输入参数值是否等于 2个,getArgumentDesc 函数中定义
checkParameterCount(collection,2);
//把 Collection<CompoundVariable> 转换为数组,固定写法
Object[] parmsData = collection.toArray();
// 把 data 对象取值做 CompoundVariable 类型强制转换,在用execute 方法把值转成String 类型
s1 = ((CompoundVariable) parmsData[0]).execute();
s2 = ((CompoundVariable) parmsData[1]).execute();
}
@Override
public String execute(SampleResult arg0,Sampler arg1){ // arg0,arg1 貌似能不用
//函数执行的主题,函数逻辑处理,最终的处理结果返回;
// 能直接调用其他的方法;
return method();
}
@Override
public String getReferenceKey(){
//用来定义行数的名称
String key = "__idCard";
return key;
}
其他相关:
字符串转整数: int x = Integer.parseInt(str);
*** Jmeter 自定义协议
1.需要jar 包 ApacheJmeter_core.jar 和 ApacheJmeter_java.jar
2.继承 org.apache.jmeter.protocol.java.sampler.AbstractJavaSamplerClient 类
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?