Java 如何在JMeter中正确使用hashmap和属性

Java 如何在JMeter中正确使用hashmap和属性,java,jmeter,Java,Jmeter,我面临下一个问题。 我有一个.txt文件,其中包含以下格式的数据: “名称”=“值” 真实数据作为示例: counter=10 scheduleNewPeriodEnd=2100-12-31 scheduleNewPeriodStart=2100-01-01 我举了一个例子,试图用JSR223采样器或Beanshell采样器将其转换为hashmap。然后,我想将一些值从映射到属性,以便在下一个请求线程中使用: String filePath = "/soap/otherDat

我面临下一个问题。 我有一个.txt文件,其中包含以下格式的数据:

“名称”=“值”

真实数据作为示例:

counter=10
scheduleNewPeriodEnd=2100-12-31
scheduleNewPeriodStart=2100-01-01
我举了一个例子,试图用JSR223采样器或Beanshell采样器将其转换为hashmap。然后,我想将一些值从映射到属性,以便在下一个请求线程中使用:

    String filePath = "/soap/otherData.txt";
    String counter = ""; 
    String scheduleNewPeriodEnd = "";
    String scheduleNewPeriodStart = "";
    String arSchruleTypeId = "";
    String sarSchruleTypeId = "";

    HashMap map = new HashMap();
   
    String line;
    BufferedReader reader = new BufferedReader(new FileReader(filePath));
    while ((line = reader.readLine()) != null)
    {
        String[] parts = line.split("=", 2);
        if (parts.length >= 2)
        {
            String key = parts[0];
            String value = parts[1];
            map.put(key, value);
        } else {
            System.out.println("ignoring line: " + line);
        }
    }
   
    counter = map.get("counter");
    scheduleNewPeriodStart = map.get("scheduleNewPeriodStart");
    scheduleNewPeriodEnd = map.get("scheduleNewPeriodEnd");
    arSchruleTypeId = map.get("arSchruleTypeId");
    sarSchruleTypeId = map.get("sarSchruleTypeId");

    props.put(schPerStart,  scheduleNewPeriodStart);
    
    reader.close();
但它不起作用。当我想看到道具包含什么时-实际结果如下:

log.info("Property schPerStart is:  " + props.get("schPerStart"));

INFO o.a.j.u.BeanShellTestElement: Property schPerStart is:  ${schStart}
预期结果应为:

INFO o.a.j.u.BeanShellTestElement: Property schPerStart is: 2100-01-01
所以我没有任何名为${schStart}的变量,也不明白为什么JMeter会把它放在props中。 java代码在Idea中进行了测试,将值保存到映射正确。 是我做错了什么吗?问题解决了。
问题是我将代码包装到类中,而他并没有在那个里调用。我刚刚删除了类和方法包装,现在可以正常工作了。

问题出在您编写的唯一一行中,只需在您的
schPerStart
周围加上引号,“code”就可以开始正常工作了

props.put("schPerStart",  scheduleNewPeriodStart);
还要注意的是,Groovy的性能比Beanshell好得多,有关更多详细信息,请参阅本文


您无需更改任何一行,只需将整个代码片段复制并粘贴到相关的文件中即可(除非您希望使代码更“有趣”)

谢谢。这个错误也被修正了。