返回

Serenity BDD 测试中环境变量读取的空值问题解决指南

java

环境变量读取中的空值问题

问题

在 Serenity BDD 测试中使用 EnvironmentVariables 读取 serenity.conf 中的环境特定数据时,得到 null 值。

分析

  • 确保 serenity.conf 在正确目录中: 位于 src/test/resources/serenity.conf。
  • 验证 Maven 命令指定了环境: 使用 -Denvironment=dev 选项。
  • 检查 Serenity BDD 测试类配置: 使用 @RunWith(SerenityRunner.class) 和 @ManagedEnvironment(SystemPropertiesSerenityEnvironment.class) 注解。

解决方案

1. 验证 Maven 命令

mvn clean verify -Denvironment=dev

2. 验证 serenity.conf 文件

environments {
    dev {
        restapi.baseurl = "https://dev.api.3stripes.io/"
    }
    stg {
        restapi.baseurl = "https://stg.api.3stripes.io/"
    }
    default {
        restapi.baseurl = "https://prod.api.3stripes.io/"
    }
}

3. 验证 Serenity BDD 测试类

@RunWith(SerenityRunner.class)
@ManagedEnvironment(SystemPropertiesSerenityEnvironment.class)
public class MySerenityTest {
    // ...
}

4. 检查依赖项

<dependency>
    <groupId>net.serenity-bdd</groupId>
    <artifactId>serenity-core</artifactId>
    <version>3.4.1</version>
</dependency>

5. 其他提示

  • 重启 IDE。
  • 清除 Maven 本地存储库。
  • 验证操作系统变量。
  • 参阅 Serenity BDD 文档进行故障排除。

代码示例

import net.serenitybdd.core.environment.EnvironmentSpecificConfiguration;
import net.serenitybdd.core.environment.RunEnvironment;

public class MySerenityTest {

    @BeforeClass
    public static void setUp() {
        EnvironmentSpecificConfiguration environmentConfiguration = RunEnvironment.currentEnvironment().getConfiguration();
        String baseURI = environmentConfiguration.getProperty("restapi.baseurl");
        // ...
    }

    // ...
}

结论

遵循这些步骤,应该能够从 serenity.conf 读取环境变量。

常见问题解答

  1. 为什么我没有得到空值?
    • 检查 Maven 命令、serenity.conf 文件、Serenity BDD 测试类配置和依赖项。
  2. 如何读取多个环境变量?
    • 使用 EnvironmentSpecificConfiguration 对象的 getProperty() 方法。
  3. 为什么我的 Maven 命令不起作用?
    • 检查环境名称是否与 serenity.conf 中的环境名称匹配。
  4. 如何清除 Maven 本地存储库?
    • 运行 mvn clean。
  5. 哪里可以找到更多信息?