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