Spring启动-不同的测试方法
我已经和Spring和Hibernate一起工作了大约两年。最近我也一直在做测试。现在我不太确定我是否理解正确我是否正确理解存在以下方法**如果我做了错误的假设,请纠正我强> 方法1: 情况:测试类用@Transactional注释。测试数据在@beforeach方法中手动创建,并存储在存储库中 优点:通过@Transactional annotation,所有(每个之前、每个测试方法、每个之后)方法都在一个事务中执行,可以通过回滚直接撤消,因此无需清空数据库 缺点:由于所有操作都在一个事务中执行,并通过回滚直接取消,因此数据在数据库中永远不会正确结束?在提交过程中可能会发生错误?这意味着测试不能反映真实情况 方法2: 情况:测试类没有@Transactional注释。测试数据被创建并存储在@beforeach方法中 优点:由于缺少@Transactional注释,服务或控制器的所有调用都在单独的事务中执行,反映了真实情况 缺点:由于所有操作都在单独的事务中执行,因此每次测试后必须手动完全清空数据库(禁用约束并清空每个表) 我还有另一个问题,但它更主观,你是否更喜欢使用@beforeach方法初始化测试数据,手动创建对象并通过存储库或@SQL注释中的SQL脚本保存?在我看来,通过SQL脚本初始化感觉更快Spring启动-不同的测试方法,spring,spring-test,spring-test-mvc,Spring,Spring Test,Spring Test Mvc,我已经和Spring和Hibernate一起工作了大约两年。最近我也一直在做测试。现在我不太确定我是否理解正确我是否正确理解存在以下方法**如果我做了错误的假设,请纠正我 方法1: 情况:测试类用@Transactional注释。测试数据在@beforeach方法中手动创建,并存储在存储库中 优点:通过@Transactional annotation,所有(每个之前、每个测试方法、每个之后)方法都在一个事务中执行,可以通过回滚直接撤消,因此无需清空数据库 缺点:由于所有操作都在一个事务中执行,