在 JMeter 中使用带有外部 SDK 的 Guava Optional

Using Guava Optional with External SDK in JMeter

我们使用的 SDK 在方法中 returns Guava 可选 Optional<User> 类型。在 JMeter 中,我们使用 beanshell 示例脚本以下列方式调用该方法:

Optional<User> = new SDKClass().retrieveUser(...);

我们看到的错误是:

2015/10/06 14:02:18 WARN  - jmeter.protocol.java.sampler.BeanShellSampler: org.apache.jorphan.util.JMeterException: Error invoking bsh method: eval    Sourced file: inline evaluation of: ``import com.google.common.base.Optional; import com.google.gson.Gson; import com. . . . '' : Typed variable declaration : Method Invocation retrieveUser

在 SDK 中,我们尝试调用的方法具有以下签名:

public Optional<User> retrieveUser(HttpServletRequest request, HttpServletResponse response) {

因此,看起来 JMeter beanshell 脚本调用 SDK 本身没有问题,只有这个特定方法 returns Guava 可选。

Beanshell 不理解泛型语法。

使用 JSR223 测试元素 + groovy.

下载groovy,解压后将位于embeddable的groovy-all-xxx.jar放入jmeter/lib,重启jmeter即可。