gpt4 book ai didi

unit-testing - DAO(又名存储库)是否应该进行单元测试?

转载 作者:行者123 更新时间:2023-12-03 00:38:25 24 4
gpt4 key购买 nike

任何存储库/DAO 实现中值得测试的部分都是查询。 为了确保这些查询是正确的,您必须在实际数据库。

鉴于上述事实,对 DAO/存储库进行单元测试是否有意义?如果是,最佳实践是什么?

最佳答案

我非常虔诚地对我的存储库进行单元测试。实际上,它们可能是我最重要的单元测试。

如果您使用 NHibernate 等 ORM,这实际上会非常轻松。

我使用一个包含设置和拆卸的基本装置来创建内存中的 sqlite 数据库,然后在每次测试结束时销毁它。这速度快得惊人。然后,对于每个存储库,我都有一个设置,可以为我的测试注入(inject)测试数据。这是非常独立的,可以捕获我的存储库查询中的所有逻辑问题。

它唯一没有捕获的是数据库提供程序的特定情况,但是当使用像 NHibernate 这样的东西时,这些通常是异常(exception)。

对于测试数据库特定查询的特殊情况,您可能需要一套使用不同设置和拆卸方法的测试。不幸的是,这些测试比其他单元测试更慢并且可能更脆弱(这就是为什么它们应该被分组在一起)。

如果您正在测试的数据库软件的“快速”版本可用,我仍然建议在本地动态设置数据库,以便您始终确保测试运行的数据库具有他们期望的架构。不过,我会更改其设置和拆卸的一部分。我只会在整个测试运行的开始和结束时设置和拆卸数据库。然后每个测试设置和拆卸都应该启动一个事务,然后在最后回滚。这是在测试之间划分事物的快速方法。您最不想看到的就是一个测试的数据影响另一个测试。

关于unit-testing - DAO(又名存储库)是否应该进行单元测试?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2261244/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com