【发布时间】:2019-07-14 13:56:53
【问题描述】:
我目前正在开发一个项目,该项目由多个存储库组成,所有存储库都依赖于存储用于数据库操作的代码的存储库:
- AWS lambda1 的 repo1 具有 databaseRepo 作为依赖项
- repo2 for AWS lambda2 具有 databaseRepo 作为依赖项
- AWS lambda3 的 repo3 具有 databaseRepo 作为依赖项
- ...
- databaseRepo - 用于数据库操作的 SQL 脚本、存储库和 DAO(带有普通 JDBC)。
我们在生产环境和内存 H2 中有 MySQL 用于测试目的。让我们假设我想在其中一个存储库(例如 repo1)中测试逻辑,该存储库需要数据库中的一些记录才能返回成功。我们需要在测试执行之前插入一行,并且我们还断言在测试结束时是否正确修改了其他行。对于测试设置和验证,哪种方法更好/更干净?
- 使用 databaseRepo(生产代码)中的存储库/DAO 在测试中执行 CRUD 操作。
- 为 DAO/存储库层创建 test 代码并仅在测试代码中使用它。
目前我们正在使用第二种方法,恕我直言,在我们的情况下更好,因为我们没有经过良好测试的 databaseRepo 逻辑。但是,这样我们有一点代码重复,我们需要维护更多的代码。
您使用哪种方法以及为什么?
问候, 迈克尔
【问题讨论】:
标签: java database testing tdd clean-architecture