gpt4 book ai didi

java - 每个位置具有不同属性的 Spring Boot 测试

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:33:14 27 4
gpt4 key购买 nike

我的问题简而言之:如何在不同环境中运行具有不同属性的测试?

长版:我写了一个 JUnit-Test,它在类顶部有注释,如下所示:

@RunWith(SpringRunner.class)
@SpringBootTest( classes=RunServer.class, webEnvironment = WebEnvironment.DEFINED_PORT )
@TestPropertySource(locations="file:conf/application-junit.properties")
public class MyDbTest {...

在当前的conf/application.junit.properties中有5400端口连接数据库的语句。

但现在我发现我不仅在本地运行测试,而且在数据库端口位于 5500 的另一台机器上运行测试,例如 Jenkins。

我确实有一个带有正确端口的属性文件,它位于 conf/application-jenkins.properties

现在我想知道如何在源代码中为 @TestPropertySource(locations=...) 设置正确的值?

顺便说一句。这对于我只设置为参数的非测试代码执行来说完全没有问题
java -jar myjar.jar --spring.config.location=
我的属性文件不在类路径中。它们被设置为绝对文件路径。

谢谢大家的帮助。

最佳答案

你不应该指定:

@TestPropertySource(locations="file:conf/application-junit.properties")

在测试类中对 junit Spring Boot 配置文件进行硬编码。

相反,您应该根据作为 mvn test 执行的配置文件集执行测试,例如:

mvn clean test -Dspring.profiles.active=junit

mvn clean test -Dspring.profiles.active=jenkins

application-junit.propertiesapplication-jenkins.properties 将根据 spring.profiles.active 自动用于创建 ApplicationContext > 值(value)集。

关于java - 每个位置具有不同属性的 Spring Boot 测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49424731/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com