2016-08-10 4 views
0

Я обновляю свой код с помощью новых функций Spring Boot 1.4, и в своих тестах интеграции я пытался использовать новую аннотацию @DataJpaTest. У меня возникают проблемы с файлами .sql, которые я хотел бы запустить, некоторые из них только для интеграционных тестов, а другой - для будущей производственной базы данных.Новый @DataJpaTest в spring-boot 1.4 и отношение с application.properties

В моих тестах интеграции я использую аннотацию @Sql с файлами .sql внутри каталога /src/test/resources и для него в базе данных H2. Для производства я использую базу данных mysql, и у меня есть файл data-mysql.sql внутри /src/main/resources.

Когда я запускаю свои интеграционные тесты, я надеялся, что выполняются только файлы внутри /src/test/resources, но даже мой data-mysql.sql выполняется.

Это нормальное поведение? Есть ли простое изменение?

Пример код:

@RunWith(SpringRunner.class) 
@DataJpaTest 
@Sql("/test-data.sql") 
public class CdrIntegrationTest { 
    // any tests here 
} 

И моя "производство" конфига эти из них:

spring.jpa.hibernate.use-new-id-generator-mappings=true 
spring.datasource.url=jdbc:mysql://localhost/prod 
spring.datasource.username=root 
spring.datasource.password=*** 
spring.datasource.initialize=true 
spring.datasource.platform=mysql 

Спасибо за любую помощь.

ответ

0

По «производственным» конфигурациям они находятся только в application.properties? По умолчанию при запуске теста с использованием SpringRunner и @DataJpaTest он будет загружать ApplicationContext, который загружает эти application.properties и как таковой пытается загрузить файл data-{platform} .sql во время тестирования. В этом документе описывается порядок проверяемых свойств: http://docs.spring.io/spring-boot/docs/current/reference/html/boot-features-external-config.html. # 1 использует источник @TestPropertySource. Таким образом, вы можете создать файл h2-test.properties в src/test/resources и определить свои свойства источника данных, обратив особое внимание на spring.datasource.platform.

+0

Да, производственные конфигурации находятся только в файле application.properties. Я не понимаю, почему он загружает файл data-mysql.sql, если он загружает для тестирования базу данных H2? Если это связано с параметром spring.datasource.platform, я попытался снять его, но тогда data-mysql.sql не запускается ни в тестах интеграции, ни в запуске приложения. Я видел @TestPropertySource, но, похоже, для всего одного конфигурационного файла есть несколько сценариев sql, работающих в тестах интеграции, а другие - в запуске приложения. –

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