【執(zhí)行BeanShell Sampler報(bào)錯(cuò)】
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查看結(jié)果樹 - 請求報(bào)文:獲取異常請求參數(shù)
(2)從BeanShelll Sampler找到異常變量對應(yīng)的代碼
2. 分析報(bào)錯(cuò)信息
(1)Typed variable declaration :變量聲明有問題
(2)Method Invocation replaceAll:replaceAll這個(gè)方法變量聲明有問題
(3)結(jié)合異常請求參數(shù)意敛,即:異常請求參數(shù)的replaceAll這個(gè)方法變量聲明有問題
3. 檢查語法
replaceAll() 方法
replaceAll() 方法用于將目標(biāo)字符串中匹配某正則表達(dá)式的所有子字符串替換成新的字符串焕窝,其語法形式如下:
字符串.replaceAll(String regex, String replacement)
字段.replaceAll("正則表達(dá)式要替換的部分舊值", "新值")
“.”是正則表達(dá)式的元字符君珠,匹配除換行符以外的任意字符
正則表達(dá)式識別的字符列表:
. 匹配除換行符以外的任意字符
^ 匹配字符串的開始
$ 匹配字符串的結(jié)束
* 重復(fù)零次或更多次
+ 重復(fù)一次或更多次
? 重復(fù)零次或一次
其中,regex 表示正則表達(dá)式侠讯,replacement 表示用于替換的字符串。例如:
String words = "hello java谊迄,hello php";
String newStr = words.replaceAll("hello","你好 ");
System.out.println(newStr); // 輸出:你好 java,你好 php
4. 檢查腳本
檢查腳本的:異常請求參數(shù)的replaceAll這個(gè)方法的變量聲明
檢查每一個(gè)變量通過replaceAll要取的新值是否正確對應(yīng)上
String originData = originData.replaceAll("#orderNo#",vars.get("orderNo")).replaceAll("#importTime#",vars.get("importTime
")).replaceAll("#wmsBillNo#",vars.get("wmsBillNo")).replaceAll("#detailsItem#",detailsItem);
5. 檢查結(jié)果
importTime
沒在jmeter的【用戶定義的變量】添加這個(gè)參數(shù)
參考文檔:
http://m.biancheng.net/view/836.html Java字符串的替換(replace()窑多、replaceFirst()和replaceAll())