Я использую Spring Boot 2.0.4.RELEASE и настроил src/test/resources/application.yml
как
spring:
jpa:
show-sql: false
hibernate:
dialect: org.hibernate.dialect.SQLServer2012Dialect
ddl-auto: none
naming:
physical-strategy: org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardImpl
properties:
hibernate:
generate_statistics: false
show_sql: false
У меня очень простой тест:
@DataJpaTest
@AutoConfigureTestDatabase(replace = AutoConfigureTestDatabase.Replace.NONE)
@ExtendWith(SpringExtension.class)
public class MyTest {
...
}
Тест игнорирует свойства (это легко увидеть, когда он печатает операторы гибернации). Помещение тех же свойств в файл application.properties
работает.
Смена имени на application-test.yml
и запуск теста профиля тоже не помогли.
При смене аннотации @DataJpaTest
на @SpringBootTest
работает ...
Важно отметить, что остальные свойства (вещи, относящиеся конкретно к моему приложению и не имеющие префикса spring.*
, читаются и используются как обычно
Я предпочитаю использовать файл yaml (например, в /src/main/resources
) и предпочитаю не загружать полный @SpringBootTest
только для чистых тестов JPA ... Есть ли что-нибудь еще, что я могу настроить, чтобы это работало?
Попробуйте добавить: @TestPropertySource (location = "classpath: application.yaml")
Это проблема отступов. properties
нужно переместить на один уровень влево.
spring:
jpa:
show-sql: false
hibernate:
dialect: org.hibernate.dialect.SQLServer2012Dialect
ddl-auto: none
naming:
physical-strategy: org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardImpl
properties:
hibernate:
generate_statistics: false
show_sql: false
Но вы также можете попробовать это, если вы используете logback.xml для регистрации конфигурации:
<logger name = "org.hibernate.stat" level = "OFF"/>
для меня его печать операторов jpa sql, а не чтение флагов, супер раздражает!