51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 2518|回复: 0
打印 上一主题 下一主题

[原创] 【Nunit入门系列讲座 2】Nunit的测试集管理

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2011-11-17 11:17:46 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
作者:shinoy
时间:2011/11/10 版权所有,侵权必究。

出处:http://blog.csdn.net/snowshinoy


本节示例代码下载:样例代码

     上一次讲座中我们初步了解了NUnit的用法,并定义了一些简单的测试(请参考http://blog.csdn.net/snowshinoy/article/details/6951352)。大家可能也注意到了,这些测试什么也不做,就是直接让测试通过或者失败。今天,我们会了解一下NUnit中最常用的一项功能——测试集管理。大家都知道,当我们的测试Case越来越多的时候,每次选择其中一些相关Case来跑会显得相当的不便,其他人也不能一眼看出我们的测试是如何分类的。通过NUnit提供的一些属性,我们可以很轻松的完成这种测试分类及分组运行的要求。

一、TestFixture 和 Test属性

             NUnit的很多功能都是通过属性来提供的。属性是.NET语言中一个很重要的特性,从代码上看,属性就是一个加在元素前面的中括号标识。如下
  1. [Ignore("ignored test")]  
  2. public void IgnoredTest()  
  3. {  
  4. throw new Exception();  
  5. }
复制代码


     上面代码中的第一行就是一个属性定义。从原理上说,属性是在.NET组件文件的Metadata中添加的一些可以被其他组件读取的信息。大家如果不理解,就把他想象成HTML的标签就可以。
     NUnit根据测试组件的命名空间及TestFixture和Test属性来分类不同的测试。
     TestFixture属性定义了一组测试,该属性加在测试类定义上,表明该类中定义的测试都是属于同一个测试集的。
     Test属性定义了一个测试,该属性加在测试类成员函数定义上,表明该函数定义了一个单独的测试。
     知道了这2个属性的基本概念后,我们就可以来定义我们的测试集了。这里我们定义两组测试,一组名称叫IQuickTestGp1,另一组叫IQuickTestGp2。这个2个测试分别为自动化组和白盒组所用,每个测试集里包含的测试如下:
IQuickTestGp1: AutomationTest1,AutomationTest2,AutomationTest3。
IQuickTestGp2: WhiteboxTest1,WhiteboxTest2,WhiteboxTest3.

  1. using System;  
  2. using System.Collections;  
  3. using NUnit.Framework;  
  4.   
  5. namespace MyFirstTest  
  6. {  
  7.     /// <summary>  
  8.     /// This is our first Nunit test  
  9.     /// </summary>  
  10.     [TestFixture]  
  11.     public class IQuickTestGp1  
  12.     {  
  13.         [Test]  
  14.         public void AutomationTest1()  
  15.         {  
  16.             Console.WriteLine("AutomationTest1 Pass");  
  17.         }  
  18.   
  19.         [Test]  
  20.         public void AutomationTest2()  
  21.         {  
  22.             Console.WriteLine("AutomationTest2 Fail");  
  23.             Assert.Fail();  
  24.         }  
  25.   
  26.         [Test]  
  27.         public void AutomationTest3()  
  28.         {  
  29.             Console.WriteLine("AutomationTest3 Ignore");  
  30.             Assert.Ignore();  
  31.         }  
  32.   
  33.     }  
  34.   
  35.     [TestFixture]  
  36.     public class IQuickTestGp2  
  37.     {  
  38.         [Test]  
  39.         public void WhiteboxTest1()  
  40.         {  
  41.             Console.WriteLine("WhiteboxTest1 Pass");  
  42.         }  
  43.   
  44.         [Test]  
  45.         public void WhiteboxTest2()  
  46.         {  
  47.             Console.WriteLine("WhiteboxTest2 Fail");  
  48.             Assert.Fail();  
  49.         }  
  50.   
  51.         [Test]  
  52.         public void WhiteboxTest3()  
  53.         {  
  54.             Console.WriteLine("WhiteboxTest3 Ignore");  
  55.             Assert.Ignore();  
  56.         }  
  57.   
  58.     }  
  59.       
  60. }  
复制代码


     如上代码编译过后,就生成了MyFirstTest.dll,和前面一讲一样,将该测试组件加载到NUnit的Gui中,就可以看到测试已经按照我们的意愿组织成了如下形式:



是不是很整齐,漂亮呢?让我们在第一组TestFixture上来Run测试,就会发现,只有该测试集下的测试被启动了。这样我们不用再在一堆测试中找我们需要跑的测试在那里了,只要把相关测试分类到不同集合下就相当清楚。



最后再说一个技巧,其实不光通过TestFixture属性可以进行测试分类,细心的朋友可能已经注意到了,上图中的MyFirstTest也是一个节点,这个不就是我们代码的名称空间么?对了,利用名称空间一样可以进行测试集的分类,也就是把一组TestFixture放在一起。我们重新添加一个cs文件,这份文件和前面我们输入的完全一样,只要修改下Namespace定义即可
  1. namespace MyFirstTest2  
复制代码


现在我们重新编译下测试,看下这次的测试集是什么样的。



测试集本身又被分类到了2大类中:MyFirstTest和MyFirstTest2。
现在我们了解了NUnit中测试集管理的基本技巧,其实NUnit还有更多的测试集管理方法,我们后续将会详细介绍。请继续关注本系列课程,如果对课程有不理解的问题,可以发邮件给我28345697@qq.com,谢谢。

白盒测试QQ交流群:186447632

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?(注-册)加入51Testing

x
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

本版积分规则

关闭

站长推荐上一条 /1 下一条

小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

GMT+8, 2024-11-23 08:37 , Processed in 0.098629 second(s), 28 queries .

Powered by Discuz! X3.2

© 2001-2024 Comsenz Inc.

快速回复 返回顶部 返回列表