java springboot测试类Transactional解决 测试过程中在数据库留下测试数据问题

好 目前 我们已经完成了表现层对应的测试了
但这里有个坑 如果我们在执行某个声明周期时 包含了测试的过程 它会在数据库中留下一条数据
java springboot测试类Transactional解决 测试过程中在数据库留下测试数据问题_第1张图片
但真实企业开发 绝对不允许 过一遍留一组数据的

那么 我们的期望就是 执行测试过程 但不要留下任何数据

这是我们的数据库表
java springboot测试类Transactional解决 测试过程中在数据库留下测试数据问题_第2张图片
然后 这里 我们在测试类中 调用一下连数据库的函数 测试一下添加操作
java springboot测试类Transactional解决 测试过程中在数据库留下测试数据问题_第3张图片
然后 我们右键运行函数
java springboot测试类Transactional解决 测试过程中在数据库留下测试数据问题_第4张图片
然后再回头查看数据库

我们右键表 然后选择刷新表
java springboot测试类Transactional解决 测试过程中在数据库留下测试数据问题_第5张图片
然后再重新打开 好家伙 这下数据还进来了
java springboot测试类Transactional解决 测试过程中在数据库留下测试数据问题_第6张图片
我们这里加一个注解 Transactional 这是 spring 添加事务的注解

java springboot测试类Transactional解决 测试过程中在数据库留下测试数据问题_第7张图片
我们再次右键运行
java springboot测试类Transactional解决 测试过程中在数据库留下测试数据问题_第8张图片
然后 我们回头 刷新 查看数据库表
java springboot测试类Transactional解决 测试过程中在数据库留下测试数据问题_第9张图片
这下数据就没进来了

或者说 其实数据已经进来了 但是 又被事务回滚了 Transactional 和 Rollback 可以配合使用
不过一般来讲 Rollback 用不到
Rollback 控制事务是否回滚 默认值是true
我们将代码改成这样
java springboot测试类Transactional解决 测试过程中在数据库留下测试数据问题_第10张图片
Rollback设为false 表示 事务不回滚 然后我们右键运行之后查看数据库表

我们数据就进来了 因为不回滚了
java springboot测试类Transactional解决 测试过程中在数据库留下测试数据问题_第11张图片

你可能感兴趣的:(数据库,java,spring,boot)