【发布时间】:2019-07-30 00:47:47
【问题描述】:
在运行我的 Citrus 集成测试时,我试图让 Spring Boot 自动加载 src/test/resources/application.properties 文件而不是 src/main/resources/application.properties 文件。这些属性在测试期间可用,但它们不会覆盖主 Spring Boot 应用程序中使用的主要属性。
这是我目前的配置:
src/main/java/EventPublisher.java
@SpringBootApplication
@ComponentScan
@EnableAutoConfiguration
public class EventPublisher {
public static void main(String[] args) {
SpringApplication.run(EventPublisher.class, args);
}
}
src/main/resources/application.properties
consumer.to=stream:out
src/test/java/EndpointConfig.java
@Configuration
@PropertySource("classpath:application.properties")
@SpringBootTest
public class EndpointConfig {
...
src/test/java/CitrusTestsIT.java
@Test
@SpringBootTest
public class AutomatedIT extends TestNGCitrusTestRunner {
...
src/test/resources/application.properties
citrus.rest.server.port=7913
consumer.to=localhost:${citrus.rest.server.port}/consumer
pom.xml spring sn-p
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-dependencies</artifactId>
<version>${spring-boot.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
我假设存在注释或文件结构问题,但我至今无法弄清楚是什么问题。
更新
在将文件重命名为application-test.properties 并更改pom.xml 中的spring-boot 插件后,我得到了要从src/main/resources 加载的测试属性:
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<version>${spring-boot.version}</version>
<executions>
<execution>
<goals>
<goal>repackage</goal>
</goals>
</execution>
<execution>
<id>pre-integration-test</id>
<goals>
<goal>start</goal>
</goals>
<configuration>
<fork>true</fork>
<profiles>test</profiles>
</configuration>
</execution>
<execution>
<id>post-integration-test</id>
<goals>
<goal>stop</goal>
</goals>
</execution>
</executions>
</plugin>
通过在 POM 中将配置文件设置为 test,现在 Spring Boot 会加载测试属性。
这似乎不是正确的做法,这也限制了 application-test.properties 文件的使用仅限于主 Spring Boot 应用程序,而不是测试包。
【问题讨论】:
标签: java spring spring-boot testng citrus-framework