2016-01-08 4 views
0

Я пытаюсь использовать new feature from Spring Boot 1.3.0.RELEASE - активировать профиль с помощью конфигурации spring-boot-maven-plugin:application-test.properties не загружается при активации профилей с <profiles>

<plugin> 
    <groupId>org.springframework.boot</groupId> 
    <artifactId>spring-boot-maven-plugin</artifactId> 
    <configuration> 
     <profiles> 
      <profile>test</profile> 
     </profiles> 
    </configuration> 
    <executions> 
     <execution> 
      <id>start-application</id> 
      <goals> 
       <goal>start</goal> 
      </goals> 
     </execution> 
     <execution> 
      <id>stop-application</id> 
      <goals> 
       <goal>stop</goal> 
      </goals> 
     </execution> 
    </executions> 
</plugin> 

Но в этом случае моя интеграция тест начинает терпеть неудачу , из-за IllegalArgumentException: Could not resolve placeholder 'spring.mail.host' in string value "${spring.mail.host}"

Эта переменная определена в src/main/resources/application-test.properties:

spring.profiles: test 
spring.mail.host: 127.0.0.1 

Мой тест выглядеть следующим образом:

@ContextConfiguration(
    loader = AnnotationConfigContextLoader.class, 
    initializers = ConfigFileApplicationContextInitializer.class, 
    classes = TestContext.class 
) 
public class WhenAnonymousUserRegisterAccount extends AbstractTestNGSpringContextTests { 

    @Value("${spring.mail.host}") 
    private String mailHost; 

TestContext только определяет PropertySourcesPlaceholderConfigurer с другими файлами свойств.

Самое интересное в том, что если удалить <profiles> и активировать профиль из application.properties мой тест работает:

spring.profiles.active: test 

Итак, похоже, что, когда я использую <profiles> Spring не загружает файл application-test.properties к Окружающая среда.

Вопросы:

  • это ошибка?
  • (если это не так), как настроить весну для загрузки application-test.properties и использовать <profiles>?
  • Почему эти подходы отличаются?

ответ

1

Если указать профили в конфигурации spring-boot-maven-plugin то они доступны только если вы запустите приложение с этим плагином, то есть запустив mvn spring-boot:run. Я подозреваю, что это не относится к вашему тесту интеграции, и поэтому он не работает.

+0

Я использую 'spring-boot-maven-plugin' во время тестов интеграции (извините, я удалил эту часть, чтобы сделать вопрос короче, теперь я добавил его). –

+0

Как именно вы запускаете интеграционные тесты? Также вы должны взглянуть на https://github.com/spring-projects/spring-boot/blob/master/spring-boot-samples/spring-boot-sample-testng/src/test/java/sample/testng /SampleTestNGApplicationTests.java, на которых аннотации вы должны использовать в тесте (в основном SpringApplicationConfiguration вместо ContextConfiguration). – dunni

+0

Выполняю тесты с командой 'mvn verify'. –

 Смежные вопросы

  • Нет связанных вопросов^_^