'Hello,Into a Beanshell PostProcessor我必须增加一个变量(latitude_new)之前声明的,我写了下面的代码
请你帮我解决这个问题,我也接受其他解决方案属于JMeter World非常感谢double example = Double.parseDouble(vars.get("latitude")); double increment = 0.001; double sum = example+increment; vars.put("latitude_new",sum);
在日志查看器中,我收到以下错误2023-01-16 10:07:26,757 ERROR o.a.j.u.BeanShellInterpreter: Error invoking bsh method: eval Sourced file: inline evaluation of: `` double example = Double.parseDouble(vars.get("latitude")); double increment . . . '' : Error in method invocation: Method put( java.lang.String, double ) not found in class'org.apache.jmeter.threads.JMeterVariables' 2023-01-16 10:07:26,758 WARN o.a.j.e.BeanShellPostProcessor: Problem in BeanShell script: org.apache.jorphan.util.JMeterException: Error invoking bsh method: eval Sourced file: inline evaluation of: `` double example = Double.parseDouble(vars.get("latitude")); double increment . . . '' : Error in method invocation: Method put( java.lang.String, double ) not found in class'org.apache.jmeter.threads.JMeterVariables'your text
2条答案
按热度按时间r6vfmomb1#
错误消息表明在类org.apache.jmeter.threads.JMeterVariables中找不到put方法(java. lang. String,double)。这是因为代码中的vars对象属于org. apache. jmeter. threads. JMeterVariables类型,该类型没有接受双精度值作为第二个参数的put方法。
解决此问题的一种方法是在调用put方法之前将double值转换为String,如下所示:
另一种方法是使用String. valueOf()将双精度值转换为字符串。
应该没问题。
请注意,以上两种解决方案都可以正常工作,但第一种方案会将双精度值转换为当前区域设置的默认十进制格式的字符串。第二种方案也会将双精度值转换为当前区域设置的默认十进制格式的字符串。
h43kikqp2#
不能使用提供Double作为参数的
vars.put()
函数,选项位于:1.首先将Double转换为String
1.或者考虑使用
vars.putObject()
函数,该函数接受Object,因此可以在其中存储任何内容还应注意,从JMeter 3.1开始,建议使用JSR223测试元素和Groovy语言进行脚本编写,因为Groovy performance is much better comparing to user scripting engines,因此请考虑迁移。