我正在使用Jmeter 5.0,其中我在JSR223 PostProcessor中编写了一段Java代码。代码如下-
import java.util.Map;
import java.util.HashMap;
Map gamePlayHistoryMap = new HashMap();
gamePlayHistoryMap.put(${playerId}, ${GameplayHistoryId});
props.put("GamePlayHistoryMap", gamePlayHistoryMap);
Map payLevelDetailsMap = new HashMap();
payLevelDetailsMap.put(${playerId}, ${PayLevelDetails});
props.put("PayLevelDetailsMap", payLevelDetailsMap);
但是,当我执行测试计划时,在控制台中出现以下错误-
javax.script.ScriptException:在文件中:内联评估:
import java.util.Map; import java.util.HashMap; Map gamePlayHistoryMap = new H . . . '' Encountered "( 107 , )" at line 6, column 23. in inline evaluation of:
import java.util.Map;导入java.util.HashMap;映射gamePlayHistoryMap = new H。 。 。 ”在第6行
有人可以帮助我指出我可能在哪里出问题了吗?
答案 0 :(得分:1)
在JSR223脚本中不要使用${}
,而应使用vars.get("")
来获取变量
gamePlayHistoryMap.put(vars.get("playerId"), vars.get("GameplayHistoryId"));
似乎GameplayHistoryId
是空的,在这种情况下,请在JSONExtractor
中添加默认值或失败测试
请参阅JMeter的JSR223脚本最佳实践:
在这种情况下,请确保脚本不使用使用
${varName}
的任何变量,因为缓存将仅使用${varName}
的第一个值。而是使用:vars.get("varName")
答案 1 :(得分:1)
java
不是真正的Java,它是Beanshell interpreter,具有worse performance comparing to Groovy,您必须坚持Java 5语法。 不要将JMeter Functions and/or Variables内联到脚本中,因为它们可能会解析为导致脚本失败的内容,并且在Groovy的情况下,它们与GString模板和编译缓存功能发生冲突。使用JMeterVariables类的vars
速记来读取现有变量值并创建新的变量值,即替换此行:
gamePlayHistoryMap.put(${playerId}, ${GameplayHistoryId});
与此:
gamePlayHistoryMap.put(vars.get('playerId'), vars.get('GameplayHistoryId'));
答案 2 :(得分:0)
您缺少Map键/值的定义。
0b1010010100b11000101101000100101000110
不确定答案:
在JSR223脚本中不要使用$ {},而应使用vars.get(“”)
不确定是否与此有关。