Jmeter Beanshell无法识别Set <string>

时间:2015-06-27 12:02:38

标签: java jmeter

我想在获取示例之前删除redis中的数据,因此我将代码放在Beanshell预处理器中。但是代码没有运行,就像Beanshell无法识别Set一样,我的部分代码如下:

import redis.clients.jedis.Jedis;
import java.util.Set;

String new_pattern = "*WITHDRAW_RISK_CONTROL_*";
Set<String> keysSet = null;
System.out.println("here****************");

Set<String> keySet =null无效。我导入了Set import java.util.Set;这是Jmeter的问题吗?或任何原因?

第二个问题是:它可以识别Jedis jar中的类Jedis。但是它不能支持Jedis JedisPoolConfig,为什么?

3 个答案:

答案 0 :(得分:3)

Beanshell不支持Generics。

您应该使用JSR223PreProcessor + Groovy代替:

请注意,如果您的请求是

,则会有Redis数据集

答案 1 :(得分:2)

  • 在2011年出现的Java 7中引入了Diamond运算符
  • JMeter附带于2005年发布的Beanshell 2.0b5

因此,相当过时的Beanshell解释器不支持Java 7功能。如果删除<String>位,它应该可以工作。

Beanshell set initialization

我希望这个问题能够存在于其他地方。要调试Beanshell脚本,您可以尝试以下方法:

  1. 在脚本的最开头添加debug();指令。它将触发调试信息输出到STDOUT(您期望here****************行)
  2. try/catch块中包裹“可疑”代码,如

    try {
        // your Beanshell
        // code here
    
    } catch (Throwable ex) {
        log.info("Something went wrong", ex);
    }
    

    检查 jmeter.log 文件以获取失败详细信息。

  3. 有关JMeter中Beanshell脚本的高级信息,请参阅How to use BeanShell: JMeter's favorite built-in component指南。

答案 2 :(得分:0)

您可以使用“Object keysSet”而不是“Set keysSet”。 它解决了我的问题。