【发布时间】:2014-10-10 03:47:11
【问题描述】:
我想为数据相关代码创建单元测试。例如:
具有通常创建、更新和删除的用户类。
如果我想为“用户已存在”场景创建测试,或者更新或删除测试。我需要知道我的数据库中已经存在一个特定用户。
在这种情况下,对这些可以按任何顺序运行的操作进行独立测试的最佳方法是什么?
【问题讨论】:
标签: c# database unit-testing dependencies
我想为数据相关代码创建单元测试。例如:
具有通常创建、更新和删除的用户类。
如果我想为“用户已存在”场景创建测试,或者更新或删除测试。我需要知道我的数据库中已经存在一个特定用户。
在这种情况下,对这些可以按任何顺序运行的操作进行独立测试的最佳方法是什么?
【问题讨论】:
标签: c# database unit-testing dependencies
当您有这样的依赖项时,请考虑您是否想要集成测试而不是单元测试。如果您确实想要进行单元测试,请查看使用Mock Data.
集成测试: 测试您的代码如何与系统的不同部分集成。这可以确保您的代码正确连接到数据库或已在文件系统上创建文件。这些测试通常非常直接,并且没有“能够以任何顺序运行”的相同限制。但是,它们需要特定的配置才能通过,这意味着它们可以很好地在开发人员之间浮动。
单元测试:测试您的代码执行功能的能力。例如“我的函数AddTwoNumbers(int one, int two) 是否实际上添加了两个数字?”单元测试是为了确保代码中的任何更改都不会影响预期的结果。
当进入诸如“我的代码调用数据库是否正确输入结果?”之类的区域时您需要考虑单元测试并不意味着与系统交互。这就是我们开始使用“模拟数据”的地方。 Mock classes and mock data 代替实际系统,以确保您的代码“以我们期望的方式调用”。这方面的困难部分是它可以完成,但大多数 .Net Framework 类没有提供所需的接口以便轻松完成。
请参阅MSDN page on Tesing 了解更多信息。另外,考虑一下MSDN article on Mock Data.
【讨论】: