我想为依赖于数据的代码创建单元测试。例如:
具有通常的创建,更新和扩展的用户类。删除。
如果我想为“用户已存在”方案创建测试,或者更新或删除测试。我需要知道我的数据库中已存在特定用户。
在这种情况下,对于可以按任何顺序运行的这些操作进行独立测试的最佳方法是什么?
答案 0 :(得分:6)
当您有这样的依赖关系时,请考虑是否要 Integration Testing 而不是单元测试。如果您确实想要进行单元测试,请查看使用Mock Data.
集成测试 测试您的代码如何与系统的不同部分集成。这可以确保您的代码正确连接到数据库或在文件系统上创建了一个文件。这些测试通常非常直接,并且没有相同的约束条件,能够以任何顺序运行。"但是,它们需要特定的配置才能通过,这意味着它们确实可以从开发人员到开发人员。
单元测试:测试您的代码执行功能的能力。例如"我的函数AddTwoNumbers(int one, int two)
实际上是否添加了两个数字?"单元测试是为了确保代码中的任何更改都不会影响预期结果。
进入类似&#34的区域时,我的代码是否会调用数据库,是否正确输入结果?"您需要考虑单元测试并不意味着与系统交互。这是我们使用"模拟数据的地方。" Mock classes and mock data取代了一个实际的系统,以确保您的代码以我们期望的方式调出。"关于这一点的困难部分是它可以完成,但是大多数.Net Framework类都没有提供所需的接口以便轻松完成。
有关详细信息,请参阅MSDN page on Tesing。另外,请考虑此MSDN article on Mock Data.