热门:网页模板.net视频教程JQueryMVCjsonExtJs源码示例三级联动JQuery菜单
您现在的位置:.Net中文社区>> .Net编程>>正文内容

VS2008单元测试之NUnit集成与应用

发布时间:2010年03月03日点击数: 佚名

首先下载NUnit,我这里用的是2.5的版本,可以去http://www.nunit.org下载最新版本。
安装版:http://launchpad.net/nunitv2/2.5.3/2.5.3/+download/NUnit-2.5.3.9345.msi
解压版:http://launchpad.net/nunitv2/2.5.3/2.5.3/+download/NUnit-2.5.3.9345.zip
我这里用的是解压版。
然后,打开VS2008,新建一个类库工程,如下图示:

1

在此工程中,新建一个类,取名TestedClass,具体代码如下:

  1. using System; 
  2. using System.Collections.Generic; 
  3. using System.Linq; 
  4. using System.Text; 
  5.  
  6. namespace NunitTest 
  7.     public class TestedClass 
  8.     { 
  9.         public static int Add(int n, int m) 
  10.         { 
  11.             return n + m; 
  12.         } 
  13.         public static int Minus(int n, int m) 
  14.         { 
  15.             return n - m; 
  16.         } 
  17.     } 

然后再新建一个工程NunitDemo,作为NUnit的具体使用工程,主要是放一些测试用的代码,具体如下图所示

2

并添加两个引用,一个是刚才建的工程,另一个是NUnit
在工程中,新建一个类,取名为TestTestedClass,并键入如下代码

  1. using System; 
  2. using System.Collections.Generic; 
  3. using System.Linq; 
  4. using System.Text; 
  5. using NUnit.Framework; 
  6. using NunitTest; 
  7. using System.IO; 
  8.  
  9. namespace NunitDemo 
  10.     [TestFixture] 
  11.     public class TestTestedClass 
  12.     { 
  13.         [Test] 
  14.         public void TestAdd() 
  15.         { 
  16.             int n = 10; 
  17.             int m = 20; 
  18.             Assert.AreEqual(TestedClass.Add(n, m), 30); 
  19.         } 
  20.  
  21.         [Test] 
  22.         public void TestMinus() 
  23.         { 
  24.             int n = 10; 
  25.             int m = 20; 
  26.             Assert.AreEqual(TestedClass.Minus(n, m), 30); 
  27.         } 
  28.   
  29.     } 

现在可以启动NUnit进行,选择File->Open Project,浏览到刚才建立的NunitDemo的bin目录,选择NunitDemo.dll,这时就可以看到所写的两个测试方法了,点击Run即可运行,结果如下图示:

在这个图中,我们可以看到哪个用例通过,哪个用例未例未通过,原因是什么,如:
NunitDemo.TestTestedClass.TestMinus:
Expected: -10
But was: 30
这样,测试用例只能是在测试代码中使用,而且,要更改测试用例,必须重新编译,为了一次使用多个用例,可以在Bin目录下建立一个TestCase.txt的文本文件,并填入如下内容:
10 20 30
0 0 0
1 -1 1
11111111 11111111 22222222
这里每行代码一个测试用例,然后在测试工程中,键入如下代码:

  1. [Test] 
  2.         public void TestAdd2() 
  3.         { 
  4.             StreamReader sr = new StreamReader("TestCase.txt"); 
  5.              
  6.             string testCase=sr.ReadLine(); 
  7.             while(testCase!=null
  8.             { 
  9.                 string[] num = testCase.Split(' '); 
  10.                 if (num.Length < 1) 
  11.                     return
  12.  
  13.                 int n = int.Parse(num[0]); 
  14.                 int m = int.Parse(num[1]); 
  15.                 int result = int.Parse(num[2]); 
  16.  
  17.                 Assert.AreEqual(TestedClass.Add(n, m), result); 
  18.  
  19.                 testCase = sr.ReadLine(); 
  20.  
  21.             } 
  22.             sr.Close();           
  23.  
  24.         } 

这样,我们如果更改用例,直接更改文件内容即可,并可以一次使用多个用例。
以上是采用外部NUnit的程序运行,如果想要在VS 环境中运行,在 Solution Explorer里右击你的NunitDemo工程, 在弹出菜单中选择Properties,会打开VS的程序设置见面在左侧选择Debug,在右侧的Start Action中点选Start external program:点击右侧的浏览按钮(...)浏览到NUnit的安装目录下的nunit.exe这个文件,即可。
NUnit 在线quickStart:http://www.nunit.org/index.php?p=quickStart&r=2.5.3
文档下载:http://sourceforge.net/projects/nunit/files/NUnit%20Version%202/NUnit-2.5.2.9222-docs.zip/download

本站热点业务

更多模板/案例展示

关于我们 | 联系我们 | 团队日志 | 网站地图 | 网站合作