Performance JMeter-如何循环通过;bsh.shared”一词;单线程组中的ArrayList?

Performance JMeter-如何循环通过;bsh.shared”一词;单线程组中的ArrayList?,performance,arraylist,jmeter,beanshell,Performance,Arraylist,Jmeter,Beanshell,我在安装线程组下有一个BeanShell后处理器。 我将ArrayList放入“bsh.shared”命名空间中,如下所示: List personIdsList = new ArrayList(); ... bsh.shared.personIds = personIdsList; 我知道如何通过BeanShell函数读取值,如下所示: ${__BeanShell(bsh.shared.personIds)} 我想在另一个线程组中循环这个数组。(${personId}-它应该从列表中迭代值

我在安装线程组下有一个BeanShell后处理器。 我将ArrayList放入“bsh.shared”命名空间中,如下所示:

List personIdsList = new ArrayList();
...
bsh.shared.personIds = personIdsList;
我知道如何通过BeanShell函数读取值,如下所示:

${__BeanShell(bsh.shared.personIds)}
我想在另一个线程组中循环这个数组。(${personId}-它应该从列表中迭代值)

你能告诉我怎么做吗


谢谢

最简单的方法是与测试元件一起使用,如:

  • 将While Controller添加到第二个线程组,并将以下表达式放入“条件”区域:

    ${{u BeanShell(Integer.parseInt(vars.get(“counter”))
  • 将计数器添加为While控制器的子级,并按如下方式进行配置:

    • 开始:
      0
    • 增量:
      1
    • 最大值:
      ${BeanShell(bsh.shared.personIds.size()-1,)}
    • 参考名称:
      计数器
  • 将“当前”人员ID引用为
    ${{BeanShell(bsh.shared.personIds.get(Integer.parseInt(vars.get(“counter”)),)}
    必要时
  • 演示:

    非常感谢您的解决方案!这非常有帮助,但我有一个问题。在第一次迭代期间,计数器值未知。对此有什么解决方案吗?请使用${counter}而不是Integer.parseInt(vars.get(“counter”))使用${counter},这样您的BeanShell表达式将看起来像:${u BeanShell(bsh.shared.personIds.get(${counter}),}
    ${__BeanShell(Integer.parseInt(vars.get("counter")) < bsh.shared.personIds.size()-1,)}