Jmeter使用过程中的坑之Beanshell Map问题
前情提要:笔者调试性能脚本前,有一个参数需要进行加密操作,先是从开发那边拿到了加密使用的jar包,然后调试完成后,使用BeanShell PreProcessor将java代码粘贴进去调试,结果就出现问题了。
详细经过:
1、eclipse调试成功的脚本如下:
2、涉及的jar包放到JMeter的相关路径后,在BShell中,粘如下脚本运行
3、结果就运行报错了
2019-04-15 17:14:03,871 ERROR o.a.j.u.BeanShellInterpreter: Error invoking bsh method: eval In file: inline evaluation of: ``import java.util.*; import cn.…………DataserverTool; String . . . '' Encountered "," at line 13, column 19.
4、13行19个字节,正是这段代码导致的
Map<String, String> params = new HashMap<String, String>();
最终才知道原因是beanshell 中使用Map方法中不能指定数据类型(List也一样)
(也是因为定位到原因,怀疑类型问题,一搜beanshell中map使用,找到了了原因)
问题解决:
Map params = new HashMap();
//Map<String, String> params = new HashMap<String, String>();
修改成以上方法,调试通过。
记笔记:
在jmeter的beanshell中不要使用类似于Map<String,Object> map = new HashMap<>();,包括引用java文件的时候,java文件也不能这样使用,jmeter会报错: