|
作者: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语言中一个很重要的特性,从代码上看,属性就是一个加在元素前面的中括号标识。如下
- [Ignore("ignored test")]
- 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>
- [TestFixture]
- public class IQuickTestGp1
- {
- [Test]
- public void AutomationTest1()
- {
- Console.WriteLine("AutomationTest1 Pass");
- }
-
- [Test]
- public void AutomationTest2()
- {
- Console.WriteLine("AutomationTest2 Fail");
- Assert.Fail();
- }
-
- [Test]
- public void AutomationTest3()
- {
- Console.WriteLine("AutomationTest3 Ignore");
- Assert.Ignore();
- }
-
- }
-
- [TestFixture]
- public class IQuickTestGp2
- {
- [Test]
- public void WhiteboxTest1()
- {
- Console.WriteLine("WhiteboxTest1 Pass");
- }
-
- [Test]
- public void WhiteboxTest2()
- {
- Console.WriteLine("WhiteboxTest2 Fail");
- Assert.Fail();
- }
-
- [Test]
- public void WhiteboxTest3()
- {
- Console.WriteLine("WhiteboxTest3 Ignore");
- Assert.Ignore();
- }
-
- }
-
- }
复制代码
如上代码编译过后,就生成了MyFirstTest.dll,和前面一讲一样,将该测试组件加载到NUnit的Gui中,就可以看到测试已经按照我们的意愿组织成了如下形式:
是不是很整齐,漂亮呢?让我们在第一组TestFixture上来Run测试,就会发现,只有该测试集下的测试被启动了。这样我们不用再在一堆测试中找我们需要跑的测试在那里了,只要把相关测试分类到不同集合下就相当清楚。
最后再说一个技巧,其实不光通过TestFixture属性可以进行测试分类,细心的朋友可能已经注意到了,上图中的MyFirstTest也是一个节点,这个不就是我们代码的名称空间么?对了,利用名称空间一样可以进行测试集的分类,也就是把一组TestFixture放在一起。我们重新添加一个cs文件,这份文件和前面我们输入的完全一样,只要修改下Namespace定义即可
现在我们重新编译下测试,看下这次的测试集是什么样的。
测试集本身又被分类到了2大类中:MyFirstTest和MyFirstTest2。
现在我们了解了NUnit中测试集管理的基本技巧,其实NUnit还有更多的测试集管理方法,我们后续将会详细介绍。请继续关注本系列课程,如果对课程有不理解的问题,可以发邮件给我28345697@qq.com,谢谢。
白盒测试QQ交流群:186447632 |
|