【发布时间】:2012-07-04 12:46:14
【问题描述】:
我指的是 Spring Roo In Action(Manning 的书)。书中某处说“Roo 将测试类标记为@Transactional,以便单元测试自动回滚任何更改。
下面是说明方法:
@Test
@Transactional
public void addAndFetchCourseViaRepo() {
Course c = new Course();
c.setCourseType(CourseTypeEnum.CONTINUING_EDUCATION);
c.setName("Stand-up Comedy");
c.setDescription(
"You'll laugh, you'll cry, it will become a part of you.");
c.setMaxiumumCapacity(10);
c.persist();
c.flush();
c.clear();
Assert.assertNotNull(c.getId());
Course c2 = Course.findCourse(c.getId());
Assert.assertNotNull(c2);
Assert.assertEquals(c.getName(), c2.getName());
Assert.assertEquals(c2.getDescription(), c.getDescription());
Assert.assertEquals(
c.getMaxiumumCapacity(), c2.getMaxiumumCapacity());
Assert.assertEquals(c.getCourseType(), c2.getCourseType());
}
但是,我不明白为什么如果没有 RuntimeException 发生,这个方法的更改会自动回滚......
【问题讨论】:
标签: spring testing jpa-2.0 rollback transactional