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

fykwrbwg  于 2023-02-22  发布在  Spring
关注(0)|答案(1)|浏览(133)

我的问题简而言之:如何在不同的环境中运行具有不同属性的测试?
详细版本:我已经编写了一个JUnit-Test,它在类顶部注解如下:

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

在当前的conf/www.example.com中,有针对端口5400上的数据库连接的语句。application.junit.propertiesthere is the statement for the database connection on port 5400.
但是现在我发现我不仅在本地运行测试,而且还在另一台机器上运行测试,比如Jenkins,其数据库端口位于5500。
我确实有一个具有正确端口的属性文件,该文件位于
conf/www.example.com**。application-jenkins.properties**.
现在我想知道如何在源代码中为**@TestPropertySource(locations =...)**设置正确的值?
顺便说一句,这对于非测试代码的执行没有任何问题,我只设置为参数

__java -jar myjar.jar --spring.config.location=<PATH_TO_PROPERTIES_FILE>__

我的属性文件不在类路径中。它们被设置为绝对文件路径。
谢谢你们的帮助。

ni65a41a

ni65a41a1#

您不应指定:

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

这将在测试类中硬编码junit Sping 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值集创建应用程序上下文。

相关问题