我应该在 DAO 上添加一个 "real-delete" 方法来进行集成测试吗?

Should I add a "real-delete" method on DAO for integration test?

我正在为一些遗留代码编写一些集成测试。为确保函数按预期运行,我需要设置假数据、调用测试 API,然后清理数据。

由于政策原因,我们只能通过Hibernate、MyBatis等工具访问数据库,不能直接连接。但是,我们在 DAO 上的 delete() 方法始终是软删除样式(即打开 is_delete 标志。)所以清理实际上只是打开 is_delete 标志,假数据还在!

那么,我应该在 DAO 上添加一个 "real-delete" 方法来进行集成测试,还是有更好的方法来处理这个问题?

添加一个真正的删除方法并没有错 - 毕竟,集成测试的目的是一起测试所有组件,以努力模拟它们的实际使用方式。

我只想确保,如果您这样做,您首先添加您知道不会重复的记录。然后您可以断言这些记录存在于数据库中,删除它们,然后断言它们不再存在。这样您就可以确保您的测试永远不会删除真实数据。