2009-12-07 97 views
0

我想测试数据层,我该如何解决这个问题?我正在使用NUnit进行业务对象测试。我必须使用模拟对象(我以前从未使用过)?单元测试数据访问层

如果有人能够正确引导我,我将不胜感激。

+0

你能否介绍一下DAL?它使用LINQ到SQL,ADO.NET或其他东西吗?你能否也请告诉你正在使用的数据对象是什么?最后,你想测试什么样的东西 - 例如查询或数据对象的构建方式? – Elisha 2009-12-07 08:37:16

回答

1

使用模拟对象取决于您的单元测试。如果你不想初始化许多对象来测试单个对象,你可以使用模拟来模拟其他对象的行为。

对于测试DAL对象,每次运行测试时都必须重置DB状态。由于在数据库上运行测试会创建很多记录,这些记录可能会改变数据库的状态。

4

你将不得不这样做:

  1. 独立的业务层(或控制器层)的数据访问之遥。确保您的数据访问层完全干净。你需要模拟来做到这一点。
  2. 如果您使用的是ORM(如NHibernate),请将数据库供应商更改为轻量级(例如sqlite,将其设置为配置中的内存),以便您可以针对内存数据库执行测试。通过这种方式,您不必担心诸如资源清理等混乱的事情。当然,您需要在做测试之前预先填充数据。

这里的an answer单元测试你可能会觉得有用的DAL。