Spring Boot не загружает специфичные для теста свойства приложения во время тестов Citrus TestNG - PullRequest
0 голосов
/ 08 марта 2019

Я пытаюсь, чтобы 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, а не для пакета тестирования.

1 Ответ

0 голосов
/ 08 марта 2019

Вы называете два файла абсолютно одинаковыми, application.properties.Это означает, что будет прочитан только один файл с наивысшим приоритетом;в данном случае это тот, который у вас src/test.Вместо этого используйте функцию профиля Spring, чтобы переименовать файл переопределения в src/test/resources/application-test.properties, что позволит Boot видеть оба файла и применять желаемую логику наложения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...