模型单元测试能否真正独立,如何[ASP.NET MVC]

xan*_*rus 5 asp.net-mvc nunit unit-testing linq-to-sql

我是整个单元测试的新手,所以请原谅我缺乏经验.我已经阅读了很多材料,说没有测试应该依赖别人来做,即单元测试彼此完全独立.你真的能在现实中做到吗?我有以下示例:我有一些实体类相互依赖,基于某个数据库模式(我使用Linq-to SQL生成它们)现在,如果我想测试每个模型类,我必须构建模型类的一个对象,构建每个依赖项的测试对象,将它们分配给对象的属性,然后在检查上下文并断言它实际工作之前保留该对象.

这显然使得更难以进行不依赖于彼此的测试,或者不以特定的顺序运行(我没有在至少有一个ContentType类型的实例之前创建Content类型的实例)依赖,至少在模型水平上存在并且无法避免.

如果你认为我错了,请批评我很多.我想学习.

PS只是提到我正在使用ASP.NET MVC应用程序并使用NUnit进行测试,如果这是有道理的

Dar*_*usz 1

是的,单元测试应该(并且可以)是独立的。您描述的问题是关于依赖性的。应使用依赖注入框架来解决依赖关系(请参阅 AutoFac、Ninject 项目)。

另一件事是你的数据库应该使用模拟对象来模拟(参见 Moq、Rhino Mocks 项目)。即使数据库已断开连接,您也需要测试所有代码。

另一件事是单元测试应该只测试一个功能而不是所有的过程。