在不提交的情况下测试 (JUnit) SQL DELETE 和 UPDATE 语句

Posted

技术标签:

【中文标题】在不提交的情况下测试 (JUnit) SQL DELETE 和 UPDATE 语句【英文标题】:Testing (JUnit) SQL DELETE and UPDATE statement without commiting 【发布时间】:2018-03-05 19:47:30 【问题描述】:

有没有办法做到这一点?我想测试一些包含 DELETE 和 UPDATE 语句但不想提交更改的 SQL 请求。

【问题讨论】:

关闭自动提交并在与 UPDATE 或 DELETE 相同的事务中执行 SELECT? 您实际上需要测试什么?如果您跳过提交,您还将错过在可延迟约束中实现的任何检查(如果您的数据库支持它们)。通常,您测试数据访问,以便在运行测试之前设置数据库(专用测试数据库或内存数据库)并在运行测试后清理/丢弃数据库。 在我看来,这听起来像是集成测试,而不是单元测试 【参考方案1】:

确实取决于您使用的 RDBMS。在 Oracle 中,您可以回滚任何内容,直到执行提交。在事务性数据库中,通常有一个选项可以打开事务,处理一些数据,然后关闭或回滚。

最好的方法是用一个数据片制作一个表的副本,然后尝试那里的一切。

PS:别惹 Prod! :)

【讨论】:

以上是关于在不提交的情况下测试 (JUnit) SQL DELETE 和 UPDATE 语句的主要内容,如果未能解决你的问题,请参考以下文章

如何在不提交页面的情况下刷新 PL/SQL 动态内容区域

Spring项目使用Junit4测试配置

是否可以在不使用 SQL 连接的情况下对不同年份进行每周比较?

是否可以在不使用 Spring Boot JPA 的情况下测试基于 java 的 CRUD?

在 SQL 中,如何在不使用大小写的情况下将两个查询合并为一个?

如何使用 mockito 为以下代码编写 junit 测试?