1.和jmeter伪二次开发前面相同,引入的包最少需要AbstractFunction和CompoundVariable,包从对应的jmeter的lib文件夹下面找
2.必须要命名包名,包名的形式为XXXX.functions的格式
3.创建类必须继承AbstractFunction
4.查看和编写内容
5.代码
public class hello2 extends AbstractFunction {
public static final String key="__hello";
public static List<String> params=new LinkedList<>();
public static String username;
public static String username1;
static{
params.add("请输入第一个数字");
params.add("请输入第二个数字");
}
@Override
//用来设置GUI界面的函数参数对话框,把自己定义的参数给显示在jmeter的GUI界面上
public List<String> getArgumentDesc() {
// TODO Auto-generated method stub
return params;
}
@Override
//函数的逻辑执行主体,就是用户使用此函数之后返回的内容是什么,比如return "ty",那么用户在jmeter使用${__hello(,)}时就响应ty
//
public String execute(SampleResult arg0, Sampler arg1) throws InvalidVariableException {
int a=Integer.valueOf(username);
int b=Integer.valueOf(username1);
int c=a+b;
return c+"";
}
@Override
//用来定义函数的名称,把自己定义的内容显示在函数对话框中
public String getReferenceKey() {
// TODO Auto-generated method stub
return key;
}
@Override
//y用来接收和处理GUI界面的参数的传值
public void setParameters(Collection<CompoundVariable> arg0) throws InvalidVariableException {
// TODO Auto-generated method stub
//checkMinParameterCount(arg0,1);//用来检查传参的最小值
//checkParameterCount(arg0,2);//用来检测传参的个数
//checkParameterCount(arg0,2,4);//用来检测传参个数的范围,2-4个
//先将接收的参数转成数组,values接收页面上传过来的多个值,用数组的形式存储
Object[] values=arg0.toArray();
//然后使用CompoundVariable提供的execute()方法将值转成toString
username=((CompoundVariable)values[0]).execute();
username1=((CompoundVariable)values[1]).execute();
}
}