在JMeter中的BeanShell Sampler中将字符串解析为整数
我正在尝试在JMeter中将字符串解析为整数但由于跟随错误而失败。 如果我尝试打印vars.get返回的字符串,它们看起来很好。
2014/06/28 00:08:52 WARN - jmeter.assertions.BeanShellAssertion: org.apache.jorphan.util.JMeterException: Error invoking bsh method: eval Sourced file: inline evaluation of: ``if (ResponseCode != null && ResponseCode.equals ("200") == false ) { int i = In . . . '' : Typed variable declaration : Method Invocation Integer.parseInt
以下是我的代码
if (ResponseCode != null && ResponseCode.equals ("200") == false ) { int i = Integer.parseInt(vars.get("currentPMCount")); int j = Integer.parseInt(vars.get("pmViolationMaxCount")); if( i > j ){ log.warn("PM count on server is greater than max allowed count."); } log.warn( "The return code is " + ResponseCode); // this goes to the JMeter log file } else { Failure=true ; FailureMessage = "The response data size was not as expected" ; }
您的代码看起来不错,但它可能是currentPMCount
和/或pmViolationMaxCount
变量的问题。
如果它们看起来很好并且看起来像整数并且不超过Integer的最大/最小值,您可以尝试以下方法:
-
确保数字值周围没有“空格”字符,因为前导或尾随空格将导致转换失败。 也许在变量上调用
trim()
方法可以帮助:int i = Integer.parseInt(vars.get("currentPMCount").trim());
- 如果将脚本存储到文件中,然后在Beanshell断言中提供文件路径,则会出现“有问题”的行号
-
我的最爱:将代码包围到try / catch块中,如下所示:
try{ //your code here } catch (Exception ex){ log.warn("Error in my script", ex); throw ex; // elsewise JMeter will "swallow" the above exception }
通过这种方式,您将获得更多信息性的堆栈跟踪而不是糟糕的Error invoking bsh method
消息,它不会发出任何消息。
请参阅如何使用BeanShell:JMeter最喜欢的内置组件指南,以获取更多提示和技巧。