在JMeter中的beanshell处理器中将String转换为Long时出错

时间:2016-02-09 19:06:46

标签: jmeter beanshell

我试图将String转换为Long整数,然后进行一些计算,然后转换回String。 beanshell后处理器中的整个代码在这里(depositamount和imagecount是JMeter中已知的变量):

Long ttl=Long.valueOf(vars.get("depositamount"));
Long med=Long.valueOf(vars.get("depositamount"));
Long intermediate=med/vars.get("imagecount");

String depamt=intermediate.toString();

vars.put("depositamount",depamt);

Double tlnlast=ttl-depamt * (vars.get("imagecount")-1);

vars.put("lastamt",tlnlast.toString());

vars.put("loopcounter","1");

然而,当我运行它时,我收到一个错误:ERROR - jmeter.util.BeanShellInterpreter: Error invoking bsh method: eval Sourced file: inline evaluation of: ``Long ttl=Long.valueOf(vars.get("depositamount")); Long med=Long.valueOf(vars.get . . . '' : Typed variable declaration : Method Invocation Long.valueOf。我尝试使用Long.parseLong代替valueOf,但是使用" parseLong"会抛出同样的错误。取代" valueOf"。 我无法弄清楚我做错了什么。谢谢!

1 个答案:

答案 0 :(得分:1)

  • 从性能角度来看,最好使用Long.parseLong(String)方法
  • 仔细检查med/vars.get("imagecount")vars.get("imagecount")-1方法,vars.get()返回String。如果您的imagecount变量的类型不同,请使用vars.getObject()方法
  • 根据How to debug your Apache JMeter script文章,如果您在Beanshell脚本的最开头添加debug();指令 - 您将能够在STDOUT中看到很多调试信息,这应该足够了解决任何问题。