Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Spring启动-不同的测试方法_Spring_Spring Test_Spring Test Mvc - Fatal编程技术网

Spring启动-不同的测试方法

Spring启动-不同的测试方法,spring,spring-test,spring-test-mvc,Spring,Spring Test,Spring Test Mvc,我已经和Spring和Hibernate一起工作了大约两年。最近我也一直在做测试。现在我不太确定我是否理解正确我是否正确理解存在以下方法**如果我做了错误的假设,请纠正我 方法1: 情况:测试类用@Transactional注释。测试数据在@beforeach方法中手动创建,并存储在存储库中 优点:通过@Transactional annotation,所有(每个之前、每个测试方法、每个之后)方法都在一个事务中执行,可以通过回滚直接撤消,因此无需清空数据库 缺点:由于所有操作都在一个事务中执行,

我已经和Spring和Hibernate一起工作了大约两年。最近我也一直在做测试。现在我不太确定我是否理解正确我是否正确理解存在以下方法**如果我做了错误的假设,请纠正我

方法1:

情况:测试类用@Transactional注释。测试数据在@beforeach方法中手动创建,并存储在存储库中

优点:通过@Transactional annotation,所有(每个之前、每个测试方法、每个之后)方法都在一个事务中执行,可以通过回滚直接撤消,因此无需清空数据库

缺点:由于所有操作都在一个事务中执行,并通过回滚直接取消,因此数据在数据库中永远不会正确结束?在提交过程中可能会发生错误?这意味着测试不能反映真实情况

方法2:

情况:测试类没有@Transactional注释。测试数据被创建并存储在@beforeach方法中

优点:由于缺少@Transactional注释,服务或控制器的所有调用都在单独的事务中执行,反映了真实情况

缺点:由于所有操作都在单独的事务中执行,因此每次测试后必须手动完全清空数据库(禁用约束并清空每个表)

我还有另一个问题,但它更主观,你是否更喜欢使用@beforeach方法初始化测试数据,手动创建对象并通过存储库或@SQL注释中的SQL脚本保存?在我看来,通过SQL脚本初始化感觉更快