如何在没有数据库的情况下测试标准CRUD操作的代码(TDD)。是否有可能实现这种级别的隔离,以便我的代码与数据库无关。
非常感谢你们。
答案 0 :(得分:4)
是的。您编写了一个接口,其中包含您想要的所有数据库调用。
然后创建两个实现该接口的类。
一个人可以真正访问您的数据库。
另一个,只是假装,这是一个模拟实现。
答案 1 :(得分:2)
使用假货(如Rhino Mocks)来模拟数据访问。这样,当您的测试运行时,它们将与假冒相互作用,而不是一直向下到数据库。
答案 2 :(得分:1)
您可以使用Mock对象测试业务层(以及一些表示层)。
使用Mocks / Fakes,以便不是从DAL调用数据库,而是调用伪类并返回预定义的值。
为了测试DAL,您需要实际的数据库。您可以使用单元测试框架在数据库上运行简单的CRUD。创建一个简单的测试数据库以及一个还原点,并使用单元测试框架的设置和放大器。拆除以确保您的数据库处于预期状态。
答案 3 :(得分:1)
Q1:
我如何测试我的代码(TDD) 没有标准的CRUD操作 拥有一个数据库。
我看到帖子标有nunit,所以我假设一个.net上下文。鉴于此,我个人在项目中成功使用SQLite作为内存数据库已有几个月的时间了(与NHibernate和常见的DDD模式一起)。
Q2:
是否有可能达到这样的水平 孤立,以便我的代码 数据库独立。
我不认为编写完全独立于数据库的代码是可能的,但NHibernate占用了我95%的路径(但这个数字在很大程度上取决于你的具体情况)。
此外,具有良好的数据访问模式,例如«存储库»和«工作单元»,代码库的其余部分可以100%与数据库无关。对于其他数据源也是如此,例如CSV和XML文件。