苏飞论坛

标题: NUnit使用方法 [打印本页]

作者: 一级菜鸟    时间: 2013-3-8 10:37
标题: NUnit使用方法
本帖最后由 一级菜鸟 于 2013-3-8 11:07 编辑

这是我这两天得出的一点点经验以及NUnit的一点点实际应用中用到的内容。写的有点儿乱,不懂下面留言。谢谢~

准备NUnit
1. 下载NUnit 官网www.nunit.com    下载msi即可
2. 点击安装。选择完整版
3. 是一个单元测试框架,专门针对.NET,

说明NUnit  
1. 标签(属性)Attribute
[TestFixture] 说明该class包含有测试
注:必须是Public,否则NUnit看不到
2[Test] 标记该方法是一个测试方法,或者说该方法是可以测试的。
public void TestName() 必须不能有参数。
3Assert(断言),是一个类,包含的方法有:
AreEqual,AreSame,Equals, Fail,Ignore,IsFalse,IsNotNull。

应用NUnit
1. 创建project 一般用ClassLibrary。
2. Add References:"nunit.framework.dll"
3. 创建一个类,以Arithmetic
4. SetUp/TearDown 属性
SetUp中一般都是写初始化数据(公共的)等
最常见:比如数据库连接(如果下面的用到数据库的话),定义一些常量
TearDown中一般写恢复数据等,例如在数据表中添加了一条数据,就需要在该方法中删除此数据(更新)
5. Ignore属性
由于一些原因(由于该测试方法运行后,引发下面的测试方法出错),需要暂时忽略该方法的运行,将其他的先执行
在方法上面添加[Ignore("Multiplication is ignored")]即可。执行后颜色是黄色
6. TestFixtureSetUp/TestFixtureTearDown
和SetUp和TearDown相似
不同之处:对于昂贵资源,例如数据库连接,一般都是关键资源。而且多次连接/关闭数据库会造成时间的浪费。
SetUp和TearDown是每个test方法执行时,都需要执行,而TestFixtureSetUp/TestFixtureTearDown是该类第一个test执行时
执行TestFixtureSetUp,最后一个执行完后,执行TestFixtureTearDown。
7. ExpectedException
这里是一个验证这个假设的测试.有的时候,我们知道某些操作会有异常出现,例如, 在实例中增加除法,某个操作被0除,
抛出的异常和.NET文档描述的一样 [ExpectedException(typeof(DivideByZeroException))]
8. Test Suite 测试套件 (其实是一个分组)
如果不是同一个class中的方法,不能有[TestFixture]
如:
9. Category 对测试方法进行分组;Ecplicit被选中时才能进行测试

说明UT的一些习惯
1. 被测试method如果有多个分支,尤其是带有switch,各种if..else,try...catch,应该写多个test去测试,而不是在一个测试中测试
2. 测试范围,比如一个方法是验证一个数字是否是1和10之间,则取样点应该是:0,1,10,11,中间随便,即临界值

断点调试
1.      NUnit自动启动,调试
右击Test project    →选择Properties    →Debug    →选择Start external program,然后选择自己的安装路径下的NUnit.exe.
2.      断点调试
Debug →Attach to Process,然后点击Attach即可



作者: 站长苏飞    时间: 2013-3-8 10:46
支持一下,楼主可以使用下代码标签http://www.sufeinet.com/thread-1942-1-1.html
作者: 一级菜鸟    时间: 2013-3-8 10:50
admin 发表于 2013-3-8 10:46
支持一下,楼主可以使用下代码标签http://www.sufeinet.com/thread-1942-1-1.html

我是在word中设置的,结果复制过来还是好的,点击发布,就出现这问题了,貌似是个小bug。。
作者: 站长苏飞    时间: 2013-3-8 11:12
一级菜鸟 发表于 2013-3-8 10:50
我是在word中设置的,结果复制过来还是好的,点击发布,就出现这问题了,貌似是个小bug。。

直接复制肯定不行的,发布后会转Dz代码




欢迎光临 苏飞论坛 (http://www.sufeinet.com/) Powered by Discuz! X3.4