我正在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
目录中,如我在上一篇文章中所述,它工作正常。