我参考了Spring Roo In Action(来自Manning的书)。在某个地方它说这本书“袋鼠标记测试类为@Transactional
,使单元测试自动回滚任何变化Jpa测试和Spring自动回滚
这里的描述方法:
@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自动回滚...
谢谢!换句话说'@RunWith(SpringJUnit4ClassRunner.class)'加'@ Transactional'加'@ Test'会自动回滚? – balteo
是的。 (另一个证明链接:http://static.springsource.org/spring/docs/3.0.x/api/org/springframework/test/context/transaction/TransactionalTestExecutionListener.html) –