【执行BeanShell Sampler报错】
2020-06-19 17:39:38,166 ERROR o.a.j.u.BeanShellInterpreter: Error invoking bsh method: eval Sourced file: inline evaluation of: ``import java.util.Arrays; import java.util.HashMap; import java.util.Map; import . . . '' : Typed variable declaration : Method Invocation replaceAll
1. 定位BUG
(1)jmeter查看结果树 - 请求报文:获取异常请求参数
(2)从BeanShelll Sampler找到异常变量对应的代码
2. 分析报错信息
(1)Typed variable declaration :变量声明有问题
(2)Method Invocation replaceAll:replaceAll这个方法变量声明有问题
(3)结合异常请求参数,即:异常请求参数的replaceAll这个方法变量声明有问题
3. 检查语法
replaceAll() 方法
replaceAll() 方法用于将目标字符串中匹配某正则表达式的所有子字符串替换成新的字符串,其语法形式如下:
字符串.replaceAll(String regex, String replacement)
字段.replaceAll("正则表达式要替换的部分旧值", "新值")
“.”是正则表达式的元字符,匹配除换行符以外的任意字符
正则表达式识别的字符列表:
. 匹配除换行符以外的任意字符
^ 匹配字符串的开始
$ 匹配字符串的结束
* 重复零次或更多次
+ 重复一次或更多次
? 重复零次或一次
其中,regex 表示正则表达式,replacement 表示用于替换的字符串。例如:
String words = "hello java,hello php";
String newStr = words.replaceAll("hello","你好 ");
System.out.println(newStr); // 输出:你好 java,你好 php
4. 检查脚本
检查脚本的:异常请求参数的replaceAll这个方法的变量声明
检查每一个变量通过replaceAll要取的新值是否正确对应上
String originData = originData.replaceAll("#orderNo#",vars.get("orderNo")).replaceAll("#importTime#",vars.get("importTime
")).replaceAll("#wmsBillNo#",vars.get("wmsBillNo")).replaceAll("#detailsItem#",detailsItem);
5. 检查结果
importTime
没在jmeter的【用户定义的变量】添加这个参数
参考文档:
http://m.biancheng.net/view/836.html Java字符串的替换(replace()、replaceFirst()和replaceAll())
网友评论