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

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

长版:
我写了一个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 =< PATH_TO_PROPERTIES_FILE>
我的属性文件不在类路径中.它们被设置为绝对文件路径.

谢谢大家的帮助.

最佳答案
您不应指定:

@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.properties或application-jenkins.properties将根据spring.profiles.active值集自动用于创建ApplicationContext.

转载注明原文:java-每个位置具有不同属性的Springboot测试 - 代码日志