在 cucumber 中,如果您使用 BeforeAll 注释在所有测试代码之前运行,则需要将该方法设置为静态。我设置了这样一个方法,我想调用一个方法来设置从 serenity.conf 文件中获取的环境变量:
@BeforeAll
public static void beforeAllTests() {
setEnvVars();
}
需要执行此操作以设置所有测试用户以在每个环境中使用。 serenity.conf 文件有一个环境部分,为我提供每个环境的环境变量,可以通过 maven 调用
mvn clean verify -Denvironment=stage
当我通过此静态 beforeall 方法访问环境特定变量时,我在配置行上收到 nullPointerException,因为环境变量未启动。这是静态方法 setEnvVars:
public EnvironmentVariables environmentVariables;
public static String MY_ENV_VAR;
public static void setEnvVars() {
EnvironmentSpecificConfiguration configuration = EnvironmentSpecificConfiguration.from(environmentVariables);
MY_ENV_VAR = configuration.getProperty("property.from.serenity.conf.file");
}
现在,如果我使用 @Before cucumber 注释(它在每次测试之前运行),我就不必使用 static,并且上面的代码可以正常工作。我想知道是否可以通过静态方法从 serenity.conf 文件访问系统资源。在调用代码以获取 before 方法中每个测试的用户之前,我需要实例化所有测试的用户列表。任何帮助将不胜感激
A
我从 John Ferguson Smart 那里得到了关于这个问题的答案,他说使用
SerenityInfrastructure.getEnvironmentVariables()
这个在 Serenity 3.98 版本之前好像不可用