我有这样的测试:
@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将在每次测试运行之前被清理(在测试运行后没有roolback),因为在每次测试之后,表中的所有旧数据条目都被清理掉,只剩下新的插入条目。如何为了防止这种“清洁”行为?
答案 0 :(得分:1)
默认行为是在测试上下文中回滚事务。您可以使用测试方法上的@Rollback(false)
注释覆盖此行为,以便不回滚在特定测试期间对数据库所做的更改。
也就是说,建议每个测试用例都是独立的,并且应该有自己的场景设置,场景执行和场景拆除。否则,如果测试之间存在相互依赖关系,则很难分析测试失败行为。