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和接口

并且提供了ExceptionValueExceptionList等用来实现接口中的变量。

同时框架也已经早就有了一些常用的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");

 

posted @ 2012-02-04 11:36  不要理我  阅读(1336)  评论(0编辑  收藏  举报