shinoy 发表于 2011-11-17 11:17:46

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

作者: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语言中一个很重要的特性,从代码上看,属性就是一个加在元素前面的中括号标识。如下

public void IgnoredTest()
{
throw new Exception();
}

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

using System;
using System.Collections;
using NUnit.Framework;

namespace MyFirstTest
{
    /// <summary>
    /// This is our first Nunit test
    /// </summary>
   
    public class IQuickTestGp1
    {
      
      public void AutomationTest1()
      {
            Console.WriteLine("AutomationTest1 Pass");
      }

      
      public void AutomationTest2()
      {
            Console.WriteLine("AutomationTest2 Fail");
            Assert.Fail();
      }

      
      public void AutomationTest3()
      {
            Console.WriteLine("AutomationTest3 Ignore");
            Assert.Ignore();
      }

    }

   
    public class IQuickTestGp2
    {
      
      public void WhiteboxTest1()
      {
            Console.WriteLine("WhiteboxTest1 Pass");
      }

      
      public void WhiteboxTest2()
      {
            Console.WriteLine("WhiteboxTest2 Fail");
            Assert.Fail();
      }

      
      public void WhiteboxTest3()
      {
            Console.WriteLine("WhiteboxTest3 Ignore");
            Assert.Ignore();
      }

    }
      
}

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



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



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

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



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

白盒测试QQ交流群:186447632
页: [1]
查看完整版本: 【Nunit入门系列讲座 2】Nunit的测试集管理