@DataJpaTest不读取spring.jpa.*属性,而@SpringBootTest读取

dzhpxtsq  于 2022-09-18  发布在  Spring
关注(0)|答案(2)|浏览(149)

我使用的是Spring Boot 2.0.4.RELEASE,并将src/test/resources/application.yml配置为

  1. spring:
  2. jpa:
  3. show-sql: false
  4. hibernate:
  5. dialect: org.hibernate.dialect.SQLServer2012Dialect
  6. ddl-auto: none
  7. naming:
  8. physical-strategy: org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardImpl
  9. properties:
  10. hibernate:
  11. generate_statistics: false
  12. show_sql: false

我有一个非常简单的测试:

  1. @DataJpaTest
  2. @AutoConfigureTestDatabase(replace = AutoConfigureTestDatabase.Replace.NONE)
  3. @ExtendWith(SpringExtension.class)
  4. public class MyTest {
  5. ...
  6. }

该测试忽略这些属性(在打印Hibernate语句时可以很容易地看到)。将相同的属性放入application.properties文件中是可行的。

将名称更改为application-test.yml和在配置文件上运行测试也没有帮助。

当将@DataJpaTest注解更改为@SpringBootTest时,它正在工作...

需要注意的是,其余属性(与我的应用程序相关且不带有spring.*前缀的内容正在被正常读取和使用

我确实更喜欢使用YAML文件(如/src/main/resources),而不是加载一个完整的@SpringBootTest,仅用于纯JPA测试……还有没有其他我可以配置以使其正常工作的内容?

xj3cbfub

xj3cbfub1#

这是一个缩进的问题。必须将properties向左移动一级。

  1. spring:
  2. jpa:
  3. show-sql: false
  4. hibernate:
  5. dialect: org.hibernate.dialect.SQLServer2012Dialect
  6. ddl-auto: none
  7. naming:
  8. physical-strategy: org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardImpl
  9. properties:
  10. hibernate:
  11. generate_statistics: false
  12. show_sql: false

但是,如果您使用logback.xml来记录配置,也可以尝试这样做:

  1. <logger name="org.hibernate.stat" level="OFF"/>
展开查看全部
iqjalb3h

iqjalb3h2#

@AutoConfigureTestDatabase(Replace=AutoConfigureTestDatabase.Replace.NONE)-这会导致DataJpaTest使用与Spring Boot Main相同的配置。

相关问题