【发布时间】:2017-04-26 20:07:39
【问题描述】:
我有一个测试类
@RunWith(SpringRunner.class)
@DataJpaTest
我有两个测试。在每次测试中,我都会执行相同的操作,持久化对象。只有 find 调用不同。
如果我同时运行两个测试,它们会失败,但如果我一个接一个地运行测试,它们就会成功。
每次测试之间没有重置。怎么做?在每个测试中,只有对存储库的调用不同。
@Test
public void findTopByCommerceCommerceIdOrderByEntryTimeDesc() {
Long commerceId = 1L;
Commerce commerce = new Commerce();
commerce.setName("test");
this.entityManager.persist(commerce);
Member member = new Member();
member.setCommerce(commerce);
member.setMan(true);
member.setName("bob binette");
this.entityManager.persist(member);
Visit visit1 = new Visit();
visit1.setCommerce(commerce);
visit1.setMember(member);
visit1.setEntryTime(LocalDateTime.of(LocalDate.now(), LocalTime.now()));
Visit visit2 = new Visit();
visit2.setCommerce(commerce);
visit2.setMember(member);
visit2.setEntryTime(LocalDateTime.of(LocalDate.now().minusDays(2), LocalTime.now()));
this.entityManager.persist(visit1);
this.entityManager.persist(visit2);
Visit visit = visitRepository.findTopByCommerceCommerceIdOrderByEntryTimeDesc(commerceId);
assertEquals(visit.getVisitId(), Long.valueOf("1"));
}
编辑
我把所有的代码:http://pastebin.com/M9w9hEYQ
【问题讨论】:
-
通过测试
@Transactional。 -
DataJpaTest测试默认是事务性的 Martijn。发生了一些我们看不到的事情:它应该开箱即用。 -
我做了更新...
标签: java spring spring-boot spring-data-jpa junit4