如何在beanshell处理器之间传递filewriter对象

时间:2018-12-15 08:33:46

标签: jmeter beanshell

我在jmeter中使用beanshell处理器,在jmeter中,我在一个beanshell处理器中定义FileWriter对象,然后将对象(fstream)传递给另一个beanshell处理器。

String filename = "test.csv";
FileWriter fstream = new FileWriter(filename , true);
props.putObject("fstream", fstream);

现在我正在尝试将fstream对象获取到另一个beanshell处理器

fstream = props.getObject("fstream");

当我运行jmeter脚本时,出现以下错误消息:

  

方法调用中的错误:方法putObject(java.lang.String,   在java.util.Properties'中找不到java.io.FileWriter)

我知道为什么会收到此错误,因为我试图传递文件编写器对象,但是在属性类中找不到这种类型的函数。 那么我应该如何在beanshell处理器之间传递filewriter对象,请解释并提供示例代码。

1 个答案:

答案 0 :(得分:0)

  1. 如果它在一个Thread Group的范围内,则可以使用vars.putObject("fstream", fstream);

  2. 如果该方案假设使用不同的线程组,则可以仅使用props.put("fstream", fstream);函数,就像它assumes Object一样

  3. bsh.shared namespace,因此您可以通过它共享任意对象,例如:

    • 在第一个脚本元素中:

      bsh.shared.fstream = fstream
      
    • 在第二个脚本元素中:

      fstream = bsh.shared.fstream
      
  4. 考虑切换到JSR223 Test Elements and Groovy language,因为与Beanshell相比,此方法具有更好的性能