繁体   English   中英

DataJpaTest注解用法[Spring-boot]

[英]DataJpaTest annotation usage[Spring-boot]

测试时@DataJpaTest 注释的用法是什么? 我们每个数据库连接测试都需要它吗?

即使没有注释,测试也能正常工作

 @RunWith(SpringRunner.class) 
 @DataJpaTest

为什么使用@DataJpaTest 为什么使用它以及何时使用它?

默认情况下, @DataJpaTest将配置内存嵌入式数据库,扫描@Entity类并配置 Spring Data JPA 存储库。 在每次测试结束时,它也是事务性的和回滚的。 如果我们想禁用事务管理,我们可以使用:

@Transactional(propagation = Propagation.NOT_SUPPORTED)

我们还可以注入一个专门为测试设计的 TestEntityManager bean,它是 JPA EntityManager 的替代品。

@Autowired
private TestEntityManager entityManager;

因此,我们的测试类应该类似于:

@RunWith(SpringRunner.class)
@DataJpaTest
public class MyJPAUnitTest extends SpringJpaUnitTestApplicationTests {

  @Autowired
  private TestEntityManager entityManager;

  @Autowired
  CustomerRepository repository;

  @Test
  public void testExample() {...}
}

更多细节在这里: https : //grokonez.com/testing/datajpatest-with-spring-boot

使用@DataJpaTest 注解

  1. 允许您测试域逻辑,以便您可以检查 JPA 映射和查询
  2. 它还配置 Hibernate、Spring Data 和内存数据库。
  3. 如果您想重用真实的数据库,您可以覆盖内存数据库。
  4. 它还提供对 TestEntityManager bean 的访问。 这是常规实体管理器的替代方案,它仅提供一些您经常想在测试中使用的便捷方法

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM