测试时@DataJpaTest注释的用法是什么? 每个数据库连接测试都需要它吗?
即使没有注释,测试仍然可以正常工作
@RunWith(SpringRunner.class)
@DataJpaTest
为什么使用@DataJpaTest,为什么要使用它以及何时使用它?
答案 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批注
- 允许您测试域逻辑,以便您可以检查JPA映射并可以检查查询
- 它还配置Hibernate,Spring Data和一个内存数据库。
- 如果要重用真实的数据库,可以覆盖内存数据库。
- 它还提供对TestEntityManager bean的访问。这是常规实体管理器的替代方法,后者仅提供一些 您通常想在测试中使用的便捷方法