@DataJpaTest не читает свойства spring.jpa. *, В то время как @SpringBootTest делает

Я использую 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 ... Есть ли что-нибудь еще, что я могу настроить, чтобы это работало?

для меня его печать операторов jpa sql, а не чтение флагов, супер раздражает!

Kalpesh Soni 01.11.2018 23:28

Попробуйте добавить: @TestPropertySource (location = "classpath: application.yaml")

Marx 30.01.2019 20:09
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
6
2
753
1

Ответы 1

Это проблема отступов. 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"/>

Другие вопросы по теме