【单元测试】NUint使用详解及Visual Studio配置

发表于:2014-6-04 10:59

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:田园里的蟋蟀    来源:51Testing软件测试网采编

  什么是单元测试
  单元测试(Unit Testing)是针对最小的可测试软件元素(单元)的,它所测试的内容包括单元的内部结构(如逻辑和数据流)以及单元的功能和可观测的行为。通俗一点讲,就是我们编程的时候,编写的一个测试方法用于检测功能是否正确的代码段,通常而言,一个单元测试是用于判断某个特定条件(或者场景)下某个特定函数的行为。
  比如我们在编写代码的时候,写一个功能的实现代码,然后再编写一个Test方法用于测试这个功能的代码正确性,其实这个Test方法就是单元测试,又如在制造飞机的时候,通常会先生产飞机的零部件,然后再把这些成千上万的零部件进行组装,但是在组装之前,通常会对每个飞机零部件进行测试,通过了才能称为真正的飞机零部件,这个零部件测试其实就是“单元测试”。换个角度思考,如果再飞机组装后再进行测试,你会发现这是多么的愚蠢,这也说明了“单元测试”的重要性。
  一般认为,在结构化程序时代,单元测试所说的单元是指函数,在当今的面向对象时代,单元测试所说的单元是指类。以类作为测试单位,复杂度高,可操作性较差,因此仍然主张以函数作为单元测试的测试单位,但可以用一个测试类来组织某个类的所有测试函数。单元测试不应过分强调面向对象,因为局部代码依然是结构化的。单元测试的工作量较大,简单实用高效才是硬道理。
  有一种看法是,只测试类的接口(公有函数),不测试其他函数,从面向对象角度来看,确实有其道理,但是,测试的目的是找错并最终排错,因此,只要是包含错误的可能性较大的函数都要测试,跟函数是否私有没有关系。
  注:上面部分概念来源百度百科。
  为什么使用单元测试?
  为什么使用使用单元测试?简单来说,原因就像孕妇做“胎前检查”一样。我们在开发项目的过程中,做某一模块的功能,代码写完了,然后生成一下就丢给测试人员去测试,最后测试人员就提出一大堆的Bug,虽然代码的语义上没有问题,但是并不代表代码实现功能没问题,这时候就需要做“单元测试”了,在提交给测试人员之前确保“代码功能”实现没有问题,当然需求错误就是另一方面的问题了,这是“单元测试”所测试不了的。
  关于“单元测试”,很多程序员很少主动的去做,至少我是这样,为什么?
  太麻烦了
  花费太多时间
  只是说明代码没有问题
  我写的代码肯定没问题
  上面几条一般是我们抵制“单元测试”的几个主要原因,说白了,就是我们太自信、太懒了,关于“单元测试”的好处就不多说了,就像上面的例子一样,如果你不做“胎前检查”,等到你的孩子生下来身体有所“缺陷”,你后悔也来不及,这也就是使用“单元测试”的原因。
  NUint使用详解
  NUint是我们做“单元测试”常用框架之一,官网地址:http://www.nunit.org/,官网上也提供相关文档,可以下载参考下:NUnit-2.6.3-docs.zip,NUint在项目中的安装使用主要有三种方式:
  NUnit-2.6.3.msi:程序包安装,会添加到注册表,这个在配置VS的时候会用到。
  NUnit-2.6.3.zip:压缩包解压,需要在项目中添加NUint引用。
  NuGet安装命令:install-package nunit。
  示例
  关于NUint的使用,先贴一段最简单的“单元测试”的代码:
1     [TestFixture]
2     public class Test1
3     {
4         [Test]
5         public void TestMethod()
6         {
7             Assert.AreEqual("1", "2");
8         }
9     }
  属性
  可以看到在测试类和测试方法前有TestFixture和Test属性,TestFixture表示需要测试的类,也就是说测试的单元,Test表示测试用例,也就是测试方法,NUint中的TestFixture和Test属性是我们最常用的属性,当然除了他们俩之外NUint还提供了其他的一些属性,用来标注测试。
31/3123>
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号