unit-testing - 测试真实存储库

标签 unit-testing testing repository repository-pattern integration-testing

我已经设置了单元测试来测试一个虚假的存储库和使用一个虚假存储库的测试。

但是如何测试访问数据库的真实存储库呢?如果这留给集成测试,那么它似乎没有被直接测试并且可能会遗漏问题。

我是不是漏掉了什么?

最佳答案

好吧,集成测试只会测试字面上的持久性或数据与持久层之间的检索。如果您的存储库正在执行与该数据相关的任何类型的逻辑(验证,如果未找到对象则抛出异常等),可以通过伪造持久层返回的内容(是否返回查询的对象,a返回代码,或其他东西)。您的集成测试将向您保证代码可以物理地持久化/从持久化中检索数据,仅此而已。任何类型的测试逻辑都应该属于单元测试。

然而,有时逻辑可能存在于持久层本身(例如存储过程)。这可能是为了提高效率,也可能只是遗留代码。这很难进行正确的单元测试,因为您只能通过访问数据库来访问逻辑。在这种情况下,最好尝试将逻辑尽可能多地移动到您的代码库中,以便可以更轻松地对其进行测试。可能存在针对此类场景的单元测试框架,但我不知道它们(仅仅是因为缺乏经验)。

关于unit-testing - 测试真实存储库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1501385/

相关文章:

unit-testing - 在多模块项目中,maven 模块可以访问它所依赖的另一个模块的传递测试范围依赖项吗?

testing - Scala 构建工具和测试框架可以很好地协同工作吗?

git - 从 git 存储库中提取作者信息

git - 同时在多个仓库中创建 git 分支

php - 如何在 PHPUnit 中以编程方式对测试函数进行排序?

azure - 测试 Azure Functions 时如何调用ConfigureAppConfiguration

testing - Rust panic 单元测试 - 匹配错误消息的细节

go - 是否可以从 golang 工具(即不是测试)获取覆盖率信息?

c# - 使用 Dapper QueryAsync 返回单个对象

iPhone单元测试链接问题,找不到DevToolsBundleInjection.framework