Junit DirtiesContext 没有使用 JPA 回滚我的事务
Junit DirtiesContext is not rollbacking my transcation using JPA
我在我的回购 class 中创建了删除方法,并在 class 级别使用了 @Transactional,
当我调用 deletebyID 时,它会删除该 ID。在 Junit 中我确实使用了 DirtiesContext 它应该回滚事务,但是由于 @Transactional 在 class 级别,它减少了我的删除(它做了应该做的事情),
现在我的 juint 无法回滚该事务。
如何解决这个问题?
@Repository
@Transactional
public class CourseRepository {
@Autowired
EntityManager em;
public Course findById(Long id) {
return em.find(Course.class, id);
}
public Course deleteById(Long id) {
Course course= em.find(Course.class, id);
em.remove(course);
return course;
}
}
在我的 Junit 中
@Autowired
CourseRepository courseRepo;
@Test
@DirtiesContext
public void deleteById_basicTest() {
courseRepo.deleteById(100001L);
assertNull(courseRepo.findById(100001L));
}
您可以为每个测试用例使用@Transactional。它将回滚事务。
有效。
@Test
@Transactional
public void deleteById_basicTest() {
courseRepo.deleteById(100001L);
assertNull(courseRepo.findById(100001L));
}
我在我的回购 class 中创建了删除方法,并在 class 级别使用了 @Transactional,
当我调用 deletebyID 时,它会删除该 ID。在 Junit 中我确实使用了 DirtiesContext 它应该回滚事务,但是由于 @Transactional 在 class 级别,它减少了我的删除(它做了应该做的事情),
现在我的 juint 无法回滚该事务。
如何解决这个问题?
@Repository
@Transactional
public class CourseRepository {
@Autowired
EntityManager em;
public Course findById(Long id) {
return em.find(Course.class, id);
}
public Course deleteById(Long id) {
Course course= em.find(Course.class, id);
em.remove(course);
return course;
}
}
在我的 Junit 中
@Autowired
CourseRepository courseRepo;
@Test
@DirtiesContext
public void deleteById_basicTest() {
courseRepo.deleteById(100001L);
assertNull(courseRepo.findById(100001L));
}
您可以为每个测试用例使用@Transactional。它将回滚事务。 有效。
@Test
@Transactional
public void deleteById_basicTest() {
courseRepo.deleteById(100001L);
assertNull(courseRepo.findById(100001L));
}