jmeter - 无法使用 bsh.shared 在 JMeter 中的线程组之间共享数组
问题描述
我无法使用 bsh.shared 命名空间在线程组之间共享数组,请指导我
以下是我的 jmx 文件的结构:
- 线程组1
- 采样器1
- Beanshell-PostProcessor1
- 采样器1
- 线程组2
- 采样器2
- Beanshell-PreProcessor2
- 采样器2
在 BeanshellPostProcessor1 内部,
if (bsh.shared.names == void){
bsh.shared.names = new java.util.ArrayList();
}
String[] arr = vars.get("fruits").split(',');
for(int i =0;i < arr.length; i++){
if (arr[i].contains("APPLE")){
bsh.shared.names.add[arr[i]]
}
}
当我尝试访问 Beanshell-PreProcessor2 中的 bsh.shared.names 时,它不会返回值。
解决方案
您的代码存在多个问题,即:
- 您需要替换
split(',')
为,split(",")
因为String.split()函数将 String 作为参数并且您提供了一个 char - 您需要替换为
bsh.shared.names.add[arr[i]]
,bsh.shared.names.add(arr[i]);
因为这是调用ArrayList.add()函数的正确方法
完整代码以防万一:
if (bsh.shared.names == void){
bsh.shared.names = new java.util.ArrayList();
}
String[] arr = vars.get("fruits").split(",");
for (int i = 0; i < arr.length; i++) {
if (arr[i].contains("APPLE")) {
bsh.shared.names.add(arr[i]);
}
}
另请注意,从 JMeter 3.1 开始,建议使用 JSR223 测试元素和 Groovy 语言,因为Groovy 性能要高得多。
Groovy 中没有bsh.shared
命名空间,但是您应该能够使用props
简写代替,它会为您做同样的事情。
推荐阅读
- node.js - 公牛队列:通过在 jobId 中使用部分时间戳确保时间段内的唯一作业
- javascript - 用于转换 JSON 结构的 Javascript 递归函数
- xamarin - 使用 MVVMCross 为 Xamarin.android 和 Xamarin.ios 应用程序创建 3 个选项卡
- xsl-fo - 一个块中有多个内联容器 - 不能让它们中断到下一页
- java - Java中的硬编码值
- java - LayoutParams.MATCH_PARENT 不起作用,但整数起作用
- php - XML 节点访问属性与命名空间
- python - 从服务器中删除 Python
- c# - 无法将用户添加到角色 Web Api
- python - google.api_core.exceptions.ServiceUnavailable:503 从插件获取元数据失败并出现错误:“str”对象没有属性“before_request”