【发布时间】:2010-04-13 10:39:03
【问题描述】:
是否有关于如何使用 Visual Studio 2008 单元测试开发的指南?我正在使用实体框架开发一个 n 层 Web 应用程序。我的问题是为插入或更新数据库的方法创建单元测试。
【问题讨论】:
标签: visual-studio-2008 unit-testing
是否有关于如何使用 Visual Studio 2008 单元测试开发的指南?我正在使用实体框架开发一个 n 层 Web 应用程序。我的问题是为插入或更新数据库的方法创建单元测试。
【问题讨论】:
标签: visual-studio-2008 unit-testing
不要创建单元测试来测试您是 INSERTING 或 DELETING 还是对数据库执行任何操作。根本没有必要。例如,如果您使用的是 ADO.NET 或 ORM,则此代码已经过测试。你会知道它确实做到了它在锡上所说的。
存储在数据库中的测试数据不是单元测试。关于what makes a unit test, a unit test 的一个好问题。对于使用数据库代码(DAL、ORM 等)的代码,您将插入 mock objects(测试替身),这将使您的应用程序的其余部分相信它正在与数据库交互,而实际上它不是.
如果您希望确保您的代码确实在获取数据并将其存储在数据库或外部文件中,您需要编写 integration tests 来检查这一点。一种可能的方法是使用在每个测试夹具上设置的带有虚拟数据的测试数据库,您执行测试然后将数据库擦除回其先前状态。这样做的好处是您将对业务逻辑进行单元测试,并进行集成测试以确保您已正确连接数据库代码。
【讨论】:
这实际上与您使用的工具无关,而更多地与设计有关。
解决您的问题的方法是重新设计您的代码,使其能够使用存根或模拟对象。
另一种选择是确保所有测试代码都在新事务中完成。
如果您开始使用 EF 4.0,您可以受益于IObjectSet class。
【讨论】: