单元测试-使用nmock测试你的.NET代码(3)

使用模拟对象来解决问题

传统上,单元测试的术语已经包含了驱动和存根(stub)的概念。在你作为一个软件开发者的生涯中,你或许对你所需要测试的每个模块都创造相当多的这些驱动和存根。

驱动是为了访问库中的属性和方法的单一目的而写的一种程序,并用它来测试这个库中的功能。存根也是一种程序,它的目的仅仅是为所测试的库提供可能需要与其他模块交互来完成它的工作的一个执行环境。

如图2中所示的,这种概念很好的转化成了应用术语。在如今这些可利用的工具中,你有一个可同时执行驱动和存根的框架,并且可以以一种灵活动态的方式来使用它。在驱动的执行上,我使用NUnit(当前版本2.2);在存根的执行上,我使用NMock(当前版本1.1)来创建运行时的动态模拟对象。如果返回到图1里面,一个模拟对象已经代替了数据访问层来执行IMyDataAccess接口。NMock可以在运行时创建这样的一个模拟对象。

注意到NMock使用了反射机制来创建接口在运行时的模拟执行环境,因此要使用NMock,使用对接口的编码来代替执行环境是有必要的。 由于这已经是一项饱受赞誉的最优方法,因此NMock有助于加强这种重要的设计技术。

你可能感兴趣的:(单元测试-使用nmock测试你的.NET代码(3))