nunit在.net项目中的使用一(预备知识)
1.环境搭建
从http://www.nunit.org/index.php?p=download 处下载windows版本的安装文件(.msi)。
安装后,安装目录下有C:\Program Files\NUnit 2.6\bin\framework\nunit.framework.dll
在项目中引用。
2.断言
2.1 AreEquals
Assert.AreEquals(期望值,实际值) 比较内容是否相等(非引用)
2.2 IsNull
Assert.IsNull(object) 验证是否为空
2.3 AreSame
Assert.AreSame(期望值,实际值) 比较引用是否相同(即对象是否相同)
2.4 IsTrue IsFalse
Assert.IsTrue(bool) Assert.IsFalse(bool) 判断逻辑真假
2.5 Fail
Assert.Fail() 是用来标记这个位置是永远不会执行到的位置,执行到程序就停止
3.分类
3.1 Suit
TestSuit su=new TestSuit();
Su.add(测试对象);
3.2 Category
分类,可以在nunit中指定运行那种分类的测试。
4.Mock
4.1 Mock的原理
当系统做单元测试的时候,这个单元跟其他多个项目耦合了,基本上要整个程序都跑起来才能支持这样一个小的单元的测试,而且耦合的测试会导致以后其他单元的修改,带来测试过单元的BUG,于是乎,Mock从天而将。
Mock原理:
主要是通过接口来做的,应用中的代码就不用说了,正常实现接口。而Mock对象就可以通过实现自己想要获得的对象,只需要按照测试需求实现以下接口。传参都是接口的引用。
4.2 Mock的类库框架DotNetMock
使用框架可以很简单的实现Mock对象,但是模型必须有接口。
继承于MockObject和接口
并且提供了ExceptionValue,ExceptionList等用来实现接口中的变量。
同时框架也已经早就有了一些常用的mock对象,预留给实际开发中使用。
4.3动态mock对象
当一个借口内容相当多,而我的这个单元测试不需要全部写的时候,我们就可以用动态mock了,
IMock mock=new DynamicMock(typeof(ICustomer));
ICustomer cu=(ICustomer)mock.Object;
cu.SetValue("1","2");
//这里的ICustomer就是你想动态mock的借口
高版本的nunit.framework
DynamicMock mock = new DynamicMock(typeof(IUserModel));
IUserModel cu = (IUserModel)mock.MockInstance;
mock.SetReturnValue("Email", "12");
mock.SetReturnValue("Password", "1234");
mock.SetReturnValue("ConfirmPwd", "1234");
mock.SetReturnValue("Role", "Admin");