.NET 环境下进行单元测试

来源:互联网 发布:狐狸那时已是猎人知乎 编辑:程序博客网 时间:2024/05/19 23:13

转载:http://www.cnblogs.com/IPrograming/archive/2012/12/31/NunitHelloWorld.html


单元测试入门——使用NUnit框架(1)

  单元测试是一种针对源码、低层次的,为程序员设计的测试。可以保证所写的代码符合软件需求和遵循开发的目标,并在软件开发早期减少程序Bug的数量,单元测试是方法层面上的测试,也是测试中粒度最小的测试。

为什么需要单元测试?

  关于单元测试的重要性,这里的文章写得很详细:程序员为什么不写单元测试?

 

1.下载和安装Nuint

  在.NET 开发中我们既可以使用Visual Studio 自带的测试框架,也可以使用开源的Nunit框架,二者在使用上并没有太大的区别,在这里我们使用Nunit框架来作为我们的单元测试工具。

 

1.1 下载并安装Nunit框架

  首先我们到Nunit项目的主页去下载Nunit的最新版本和查看帮助文档,Nunit项目的主页:http://www.nunit.org/。在下载页面我们可以下载安装包格式或者是免安装的程序压缩包,在这里我们下载的是最新版2.6.2的安装程序,下载后安装。

2. 第一个单元测试

  首先创建一个NunitQuickStart的类库项目并添加对nunit.framework.dll 文件(在Nunit的安装目录中)的引用。

  

2.1 创建一个被测试类

  这是一个包含寻找最大数方法的Cmp类:

复制代码
 1        public class Cmp 2        { 3            /// <summary> 4            /// 寻找最大数 5            /// </summary> 6            /// <param name="list">int数组</param> 7            /// <returns></returns> 8            public static int Largest(int[] list) 9            {10                int index, max = Int32.MaxValue;11                for (index = 0; index < list.Length; index++)12                {13                    if (list[index] > max)14                    {15                        max = list[index];16                    }17                }18                return max;19            }20        }
复制代码

 

2.1 创建单元测试

  测试代码要做要最好的准备:

  • 准备测试所需要的各种条件
  • 调用要测试的方法
  • 完成后清理各种资源

 在Nunit框架中使用断言(一些辅助函数用于帮助程序员确定被测试函数是否正常工作),下面是Nunit中的各种断言:

1.相等性测试 

1 AreEquals —— Assert.AreEqual(7.8599, 7.85,0.01,"ok");


2.验证给定对象是否为空/非空

1 IsNull —— Assert.IsNull(object[,string message])2 IsNotNull(object[,string message])


3.引用相同测试

1 AreSame(expected,actual[,string message])


4.验证给定二元条件是否为真/假

1 IsTrue(bool condition[,string message])2 IsFalse(bool condition[,string message])


5.Fail —— 使测试立即失败

单元测试原则: 当有测试失败时,就不能再给原有代码添加新特性,应该先修复这个失败的测试,然后再做其他的工作。

创建测试类

  创建测试类和测试方法都是通过使用特性来添加的,测试类需要加上TestFixture特性,且必须为Public(该类必须有一个Public的默认无参构造函数);测试方法需要加上Test特性,且必须为Public

 下面是测试类的代码:

复制代码
 1       [TestFixture] 2       public class TestLargest 3       { 4           /// <summary> 5           /// 测试Largest函数是否支持负数 6           /// </summary> 7           [Test] 8           public void LargestOfNegative() 9           {10               Assert.AreEqual(-7, Cmp.Largest(new int[] { -9, -7, -8 }));11           }12   13           /// <summary>14           /// 测试Largest函数对Null数组的处理15           /// 如果该测试方法没有抛出AggregateException异常,测试失败16           /// </summary>17           [Test, ExpectedException(typeof(AggregateException))]18           public void LargestOfEmpty()19           {20               Cmp.Largest(new int[] { });21           }22       }
复制代码

 

2.2 运行单元测试

  运行使用Nunit的单元测试,有下面三种方式,下面分别对使用GUI和VS插件这两种种方式进行演示,命令行方式可以查看Nunit文档:
  • NUnit GUI —— 使用图形用户界面
  • NUnit command —— 使用命令行
  • Visual Studio Plug(Visual NUnit) —— 使用Visual Studio 插件

 使用GUI方式只需要直接打开运行Nunit程序,选择File——>Open Project,选择创建项目,测试类项目所在目录中选择编译后的DLL文件,即可:

 

直接点击Run运行测试:

我们可以看到,状态条变成了红色,这表示我们的测试没有通过,绿色表示测试通过,黄色表示某些测试忽略。根据测试结果的反馈,我们修改代码:

复制代码
 1          /// 寻找最大数 2          /// </summary> 3          /// <param name="list"></param> 4          /// <returns></returns> 5          public static int Largest(int[] list) 6          { 7              if (list.Length == 0) 8              { 9                  throw new AggregateException("Largest: empty list");10              }11              int index, max = Int32.MinValue;12              for (index = 0; index < list.Length; index++)13              {14                  if (list[index] > max)15                  {16                      max = list[index];17                  }18              }19              return max;20          }
复制代码

 

再次运行测试:

 

或者可以选择更方便的方式:选择创建的测试类库项目——>点击鼠标右键——>选择属性:

选择"调试选项",选择启动外部程序,输入Nunit Gui程序所在路径:选择后就可以直接运行类库项目来启动Nunit GUI程序了。

 

使用Visual Nunit插件:

下载地址:http://visualstudiogallery.msdn.microsoft.com/c8164c71-0836-4471-80ce-633383031099/

安装后,将插件的输出面板显示出来:视图——> 其他窗口——>Visual Nunit,可以直接在点击Run,运行测试:

运行测试:

 

注意:如果使用NUnit 进行单元测试,

在命名空间中 using NUnit.Framework;

要使用的两个关键字[TestFixture]   和    [Test]  

在 vs 2013 中可以使用vs 自带的单元测试

visual studio 2013 创建单元测试教程

 

在新建的解决方案“helloworld”中添加并且   创建单元测试项目。


 

指定项目名称。


 

然后单元测试项目现已添加到您的解决方案中。如下图


 

在单元测试项目中,向要测试的项目中添加一个引用。

 

选择包含待测试代码的项目。

 

对单元测试进行编码。


选择要测试的方法,点击鼠标右键,可以选择---》 运行测试,则可以进行测试了。

 

 

在 vs 2013 中单元测试中本身自带的关键字,

在命名空间中 using Microsoft.VisualStudio.TestTools.UnitTesting;

[TestClass] 和 [TestMethod] 两个关键字,注意与使用NUnit进行测试关键词的不同。


0 0
原创粉丝点击