从静态上下文访问 serenity.conf 中的环境特定参数时出现问题

问题描述 投票:0回答:1

在 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

java serenity-bdd cucumber-serenity
1个回答
0
投票

我从 John Ferguson Smart 那里得到了关于这个问题的答案,他说使用

SerenityInfrastructure.getEnvironmentVariables()

这个在 Serenity 3.98 版本之前好像不可用

© www.soinside.com 2019 - 2024. All rights reserved.