推荐一个单元测试模拟框架:Nsubstitute
上一篇 / 下一篇 2012-05-08 09:24:10 / 个人分类:杂谈
+FNz#Rq?@]3t0 第一次看到Nsubstitute,是在看Nunit的源码时发现,实际上Nunit已经不推荐大家使用它原来的Mock框架,它引入了 Nsubstitute。经了解,Nsubstitute已经是一个具有两年多历史的模拟框架,也算是比较年轻的框架,它昨天(2012-5-4)刚发布 了1.4版本。模拟框架很多,我们的选择很多,但是从现在开始,我们可以考虑一下用Nsubstitute,多了一个选择。
l1[l6a"Mh^;a'^I051Testing软件测试网G#QVX@t$KFPT1、Nsubstitute简介
&I:_G~9X)@0ao tf/e8NN6w~0 它是一个开源的框架,源码是C#实现的。你可以在这里获得它的源码:https://github.com/nsubstitute/NSubstitute51Testing软件测试网cNy [7E
-AzL)v]*i3c0 NSubstitute 更注重替代(Substitute)概念。它的设计目标是提供一个优秀的测试替代的.NET模拟框架。它是一个模拟测试框架,用最简洁的语法,使得我们能够把更多的注意力放在测试工作,减轻我们的测试配置工作,以满足我们的测试需求,帮助完成测试工作。它提供最经常需要使用的测试功能,且易于使用,语句更符合自然语言,可读性更高。对于单元测试的新手或只专注于测试的开发人员,它具有简单、友好的语法,使用更少的lambda表达式来编写完美的测试程序。
S(YI'T;i ] X051Testing软件测试网`k2C*O*~NSubstitute 采用的是Arrange-Act-Assert测试模式,你只需要告诉它应该如何工作,然后断言你所期望接收到的请求,就大功告成了。因为你有更重要的代码要编写,而不是去考虑是需要一个Mock还是一个Stub。
6BB2d0jAEE0,o] na d+^zF0 对比Moq,NSubstitute 的语法比更简练。这里的主要目的并不是为了比较框架的优劣。51Testing软件测试网-jR!V&\ _/`6c
51Testing软件测试网 D#rW0lt7N[2、如何获取Nsubstitute?51Testing软件测试网_N4Z)@r(G.?HZ
.H~3r,{6M4gF0 有两种获得Nsubstitute的方式:51Testing软件测试网MCy2V ^QA
51Testing软件测试网Sxqo})s一是通过NuGet或者OpenWrap工具在Vs2010上安装Nsubstitute。51Testing软件测试网&p%n} Sl#t \t5b
*`] zP.k#d2s&w;j0 二是通过下载Nsubstitute 组件(https://github.com/nsubstitute/nsubstitute/downloads ),然后在测试项目当中引用 NSubstitute.dll 文件。现在的最新版本是1.4。51Testing软件测试网!X kiS(B
U9KKcw"vl,P'Z0 3、测试方法
&~)t4_0]D[8eW o'D$J0B@)l*g-fx ad4c lZ0 可以创建接口的实例,并设定接口方法的返回值,供测试。51Testing软件测试网)ms+_'Kj x
.T+O%O8|J fr G0 1)定义一个最基本的计算器接口:
-Wn*TO*R4RK0public interface ICalculator51Testing软件测试网IX[ii { KuS`0lFo0 int Add(int a, int b); A8n6y\;Mb"m0 int Subtract(int a, int b); |