Я пытаюсь, чтобы Spring Boot автоматически загружал файл src/test/resources/application.properties
вместо файла src/main/resources/application.properties
при выполнении моих интеграционных тестов Citrus.Свойства можно использовать во время тестов, но они не переопределяют основные свойства, которые используются внутри основного приложения 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
<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>
Я предполагаю, что есть проблема с аннотацией или структурой файла, но у меня покане удалось выяснить, что это за проблема.
Обновление
Я получил тестовые свойства для загрузки из src/main/resources
после переименованияфайл в application-test.properties
и изменение плагина spring-boot
в pom.xml
:
<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>
. Если для профиля установить профиль test
в POM, то Spring Boot загрузит тестовый пр.operties.
Это не похоже на правильный способ сделать это, и это также ограничивает использование файла application-test.properties
для основного приложения Spring Boot, а не для пакета тестирования.