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

标签 java spring hibernate spring-boot spring-data-jpa

我正在使用 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 {
  ...
}

测试忽略属性(可以很容易地看到它打印 hibernate 语句)。将相同的属性放入 application.properties文件正在运行。

将名称更改为 application-test.yml并且在配置文件测试上运行也无济于事。

当更改 @DataJpaTest注释到 @SpringBootTest它的工作...

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

我更喜欢使用 yaml 文件(如在 /src/main/resources 中)而不是加载完整的 @SpringBootTest仅用于纯 JPA 测试......还有什么我可以配置的吗?

最佳答案

这是缩进的问题。 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"/>

关于java - @DataJpaTest 不读取 spring.jpa.* 属性,而 @SpringBootTest 读取,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52247312/

相关文章:

java - 使用正则表达式,如何提取顶级域名?

java - 通过 http 调用远程 .bat 文件

java - 在另一个服务 Junit 中模拟一个服务的服务

spring - 服务和 Controller 层异常处理设计模式

java - 无法从 hibernate 调用存储过程

java - org.hibernate.MappingException : Composite primary key as a foreign key in another table

java - java工件的分销企业?

java - 在从 Spring MVC 作为 JSON 发送时动态忽略 Java 对象中的字段

java - @Transactional 和packagesToScan 是相互关联的吗?

java - Spring MVC 项目的 JUnit 测试中的 @Autowired 问题