如何定义可以在Groovy中多个脚本文件中使用的常数



我正在jmeter环境中编写测试。利用Groovy和编写可重复使用的代码,我们将拥有多个脚本文件,并在定义常数的地方有一个文件。这是我的问题,如何可以访问脚本文件中文件中定义的常数?

为什么对我很重要?测试用例的逻辑中有决策点,并且在jmeter.props global变量中放置了一些数据,其中键是字符串。我想将这些钥匙存储在恒定的班级中,以避免将来打字。

我想取得类似的东西:

Groovy File 1

class Constants {
    public final static String PREFIX = 'prefix'
}

Groovy File 2

void methodName() {
    printlin("===> " + Constants.PREFIX)
}
methodName()
===> prefix

第一次尝试是类似的:

Groovy File 1

class Constants {
    public final static String PREFIX = "prefix"
}

Groovy File 2

void methodName() {
    printlin("===> " + Constants.PREFIX)
}
methodName()

导致编译器正在寻找方法名称的常数属性的错误消息。这种情况是文件在同一软件包中。

第二次尝试是与@field打交道,但我无法弄清楚如何以仅定义它们的方式分发常数的值。

有趣的是,我包括了以下类似的这些常数之一,它起作用了...

void methodName() {
    printLn("===> " + Inspector.CLASS_CLASS_IDX)
}
methodName()

如果我没记错的话,在Java中,您可以这样解决此类问题:

public class Constants {
    public static final String PREFIX = "prefix";
}
public class AnotherClass {
    public void doIt() { System.out.println(Constants.PREFIX); }
}

结果是"前缀"(对不起,我的爪哇知识仍然很生锈(

必须可见所有的constant类(脚本(,即在所有其他脚本的执行环境中都存在。否则,您将获得NoSuch*Exception s。

我不是Groovy无类无类野生脚本的专家,但是您可以尝试将常数class/-es包装到.jar文件中,并在其他脚本中使用@Grab注释来引用前者。

遵循 @dagett33建议,我将生成的jar添加到jmeter的lib目录中,如我在上一篇文章中所述,它工作正常。

最新更新