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

时间:2019-06-29 17:58:00

标签: groovy

我正在JMeter环境中编写测试。利用常规和编写可重用代码的结果,我们将拥有多个脚本文件和一个用于定义常量的文件。这是我的问题,怎么可能从脚本文件访问文件中定义的常量?

为什么对我很重要?测试用例的逻辑中有决策点,并且在Jmeter.props全局变量中放置了一些数据,其中键是字符串。我想将这些键存储在一个常量类中,以免将来出现拼写错误。

我想实现类似的目标:

Groovy文件1

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

Groovy文件2

void methodName() {

    printlin("===> " + Constants.PREFIX)
}

methodName()
===> prefix

第一次尝试是类似的事情:

Groovy文件1

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

Groovy文件2

void methodName() {

    printlin("===> " + Constants.PREFIX)
}

methodName()

导致错误消息,其中编译器正在寻找methodName.ScriptWhatever类的Constants属性 这种情况下,文件位于同一软件包中。

第二种尝试是处理@Fields,但我无法弄清楚如何将常量的值以仅在单个位置定义常量的方式进行分配。

有趣的是,我像下面这样包含了这些常量之一,并且有效...

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); }
}

结果是“前缀” (对不起,我的Java知识还很生锈)

2 个答案:

答案 0 :(得分:0)

您的所有constant类(脚本)必须可见,即,对于所有其他脚本,它们都存在于执行环境的类路径中。否则,您将获得NoSuch*Exception个。

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

答案 1 :(得分:0)

按照@dagett33的建议,如我先前的post中所述,我将生成的jar添加到jmeter的lib目录中,并且运行良好。