Groovy JMeter-jsr 223预处理器中的变量集在while controller中不可用

Groovy JMeter-jsr 223预处理器中的变量集在while controller中不可用,groovy,jmeter,jsr223,Groovy,Jmeter,Jsr223,在Thread组中,我有“JSR223预处理器”,在这里我像这样设置变量- List<String> EDPResultList = new ArrayList(); vars.putObject("EDPResultList",EDPResultList); Object resObj = vars.getObject("EDPResultList"); 我得到了一个例外- 错误o.a.j.e.JSR223后处理器:JSR223脚本中存在问题,初始Get的JSR223后处理器

在Thread组中,我有“JSR223预处理器”,在这里我像这样设置变量-

List<String> EDPResultList = new ArrayList();
vars.putObject("EDPResultList",EDPResultList);
Object resObj = vars.getObject("EDPResultList");
我得到了一个例外-

错误o.a.j.e.JSR223后处理器:JSR223脚本中存在问题,初始Get的JSR223后处理器 javax.script.ScriptException:groovy.lang.MissingPropertyException:类:Script238没有这样的属性:EDPResultList 在org.codehaus.groovy.jsr223.GroovyScriptEngineImpl.eval(GroovyScriptEngineImpl.java:324)~[groovy-all-2.4.16.jar:2.4.16]”


如何定义一个列表,我可以在我的“线程组”和“While Controller”的多次迭代中使用该列表。

要在JMeter中使用ArrayList,请使用以下方法:

  • 测试计划如下所示,第一个采样器具有初始化ArrayList的JSR223预处理器。而控制器有第二个采样器和访问ArrayList的JSR223后处理器。
  • 第一个采样器内的JSR223预处理器。将以下代码放入脚本区域

    import java.util.List;
    
    List<String> list = new ArrayList<>();
    
    list.add("John");
    list.add("Peter");
    list.add("Parkar");
    
    vars.putObject("List",list);
    

  • 结果


  • Groovy代码本身没有问题:


    您的
    JSR223预处理器
    很可能由于某种原因没有被执行,原因可能是因为没有采样器就无法执行预处理器,也可能是因为没有采样器。尝试在预处理器末尾添加
    log.info('something')
    ,以确保它已运行

    我认为异常是在不同的代码中抛出的,您是否有使用
    EDPResultList
    的其他代码?
    ArrayList result = vars.getObject("List");
    for (String value : result) {
    log.info("Values are : " + value);
    }
    vars.put("flow", "false");