在Springboot中测试幻像读取和脏读取

时间:2019-09-06 12:35:32

标签: spring spring-boot testing spring-data

虚拟读取和脏读取是初学者最大的陷阱之一,但是可以通过设置事务的隔离级别来管理它们。

您可能会争辩说它们可以由spring-boot控制。因此无需测试。但据我所知,并非所有数据库都支持隔离级别。那么,我们如何在springboot的测试中模拟它们?

1 个答案:

答案 0 :(得分:1)

我用 JUnit5 在 SpringBoot 中模拟了脏读、不可重复读、幻读、丢失更新。

测试结果如下

  1. SQL Server:
<头>
隔离级别 脏读 不可重复读 幻读 丢失更新
默认 没有发生 可能发生 可能发生 可能发生
READ_UNCOMMITTED 可能发生 可能发生 可能发生 可能发生
READ_COMMITTED 没有发生 可能发生 可能发生 可能发生
REPEATABLE_READ 没有发生 没有发生 可能发生 没有发生
可序列化 没有发生 没有发生 没有发生 没有发生
  1. MySQL
<头>
隔离级别 脏读 不可重复读 幻读 丢失更新
默认 没有发生 没有发生 可能发生 可能发生
READ_UNCOMMITTED 可能发生 可能发生 可能发生 可能发生
READ_COMMITTED 没有发生 可能发生 可能发生 可能发生
REPEATABLE_READ 没有发生 没有发生 可能发生 可能发生
可序列化 没有发生 没有发生 没有发生 没有发生
  1. PostgreSQL
<头>
隔离级别 脏读 不可重复读 幻读 丢失更新
默认 没有发生 可能发生 可能发生 可能发生
READ_UNCOMMITTED 没有发生 可能发生 可能发生 可能发生
READ_COMMITTED 没有发生 可能发生 可能发生 可能发生
REPEATABLE_READ 没有发生 没有发生 没有发生 没有发生
可序列化 没有发生 没有发生 没有发生 没有发生
  1. H2
<头>
隔离级别 脏读 不可重复读 幻读 丢失更新
默认 没有发生 可能发生 可能发生 可能发生
READ_UNCOMMITTED 可能发生 可能发生 可能发生 可能发生
READ_COMMITTED 没有发生 可能发生 可能发生 可能发生
REPEATABLE_READ 没有发生 没有发生 没有发生 可能发生
可序列化 没有发生 没有发生 没有发生 可能发生

JUnit5 测试示例 enter image description here

您可以在here中参考这个项目。

相关问题