DataJpaTest批注用法[Spring-boot]

时间:2019-06-10 09:06:20

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

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

即使没有注释,测试仍然可以正常工作

 @RunWith(SpringRunner.class) 
 @DataJpaTest

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

2 个答案:

答案 0 :(得分:0)

默认情况下,@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

答案 1 :(得分:0)

使用@DataJpaTest批注

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