我的问题简而言之: 如何在不同环境中运行具有不同属性的测试?
长版: 我写了一个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上有数据库连接的声明。
但是现在我发现我不仅在本地运行测试,而且还在另一台机器上运行,例如Jenkins,数据库端口位于5500.
我有一个带有正确端口的属性文件,该文件位于 conf / application-jenkins.properties 。
现在我想知道如何在源代码中为 @TestPropertySource(locations = ...)设置正确的值?
顺便说一下。这对于非测试代码执行都没有问题,我只将其设置为参数谢谢大家的帮助。
答案 0 :(得分:3)
您不应指定:
@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。