0

我有一个这样的测试:

 @RunWith(SpringJUnit4ClassRunner.class),
 @ContextConfiguration(locations = { "file:war/WEB-INF/application-context.xml" })
 @Transactional
 public class ServiceImplTest extends AbstractTestNGSpringContextTests
 {
     @Autowired
     private Service service;

     @Test
     @Rollback(false)
     public void testCreate()
     {
         .....
         //save an entity to table_A
         service.save(a);
     }
 }

似乎每次测试运行前都会清理table_A(不是测试运行后回滚),因为每次测试后,表中的所有旧数据条目都被清理了,只剩下测试新插入的条目。如何防止这种情况“清洁”行动?

4

1 回答 1

1

默认行为是回滚测试上下文中的事务。您可以使用测试方法上的注释覆盖此行为,@Rollback(false)以不回滚在该特定测试期间对数据库所做的更改。

也就是说,建议每个测试用例都是独立的,并且应该有自己的场景设置、场景执行和场景拆除。否则,如果测试之间存在相互依赖关系,则很难分析测试失败行为。

于 2012-11-03T05:22:47.113 回答