JMeter BeanShell PostProcessor尝试将String视为byte []

时间:2016-08-12 17:25:46

标签: jmeter beanshell

我的BeanShell PostProcessor以:

开头
result = ctx.getPreviousResult();
String data = result.getResponseDataAsString();

LoopController的第二个循环中,它会在日志中提供:

ERROR - jmeter.util.BeanShellInterpreter: Error invoking bsh method: set    Variable assignment: data: Can't assign byte [] to java.lang.String 
WARN  - jmeter.extractor.BeanShellPostProcessor: Problem in BeanShell script org.apache.jorphan.util.JMeterException: Error invoking bsh method: set    Variable assignment: data: Can't assign byte [] to java.lang.String 

但是,如果我删除了String声明,我就不会收到警告(因此使用它来解决)...即对类型不明确:)

    data = result.getResponseDataAsString();

如果我在此行之前打印result.getResponseDataAsString().getClass().getName(),我会获得java.lang.String

在JMeter中使用BeanShell相当新,但非常有信心这就是问题所在。

同时,如果我在log.info分配之前有String data = ...个语句,它们将不会在第二个循环迭代中打印 - 这让我对该评估提出质疑。

如何理解/更正尝试的byte[]作业?

供参考:这是我的测试计划:

enter image description here

基本上,每个采样器使用result.getResponseDataAsString()来获取响应体,进行一些操作以“标准化”它,然后通过vars.put()设置一个值。 BeanShell Assertion使用vars.get()检索这两个值,并相应地对它们进行比较FailureMessageFailure

注意:PostProcessor都有同样的问题。

注意2:String data = new String( result.getResponseData() );同样存在问题(即同样的错误)......并非我主张从String创建byte[]没有明确关于编码/字符集。

0 个答案:

没有答案