[转]NUnit详细使用方式

正文转自:http://www.cnblogs.com/confach/archive/2005/06/20/177817.html

初稿如下:

NUnit2.0详尽使用办法

注:NUnit中文文档可以参考我之另一个站点:http://www.36sign.com/nunit

面前一段时间,有人提问我当.NET里怎么进行TDD开发.这个题材促使自己思念对NUnit做一个详细的介绍.因为我们大家都掌握NUnit是于.NET进行TDD的利器.
若你就亮多关于NUnit的运用,请指出自身之歇斯底里的远在及提出一些建议,使本文更加完善.如果你对NUnit还不是殊了解的话,我提议乃还是看一下.

本文分为以下部分:

1. TDD的简介

首先什么是TDD呢?Kent
Beck在外的<<测试驱动开发 >>(Addison-Wesley
Professional,2003)一书写中,使用下2个标准来定义TDD:

·除非您发出一个挫折的自动测试,永远不要写一单行代码.

·阻止重复

我怀念首先独标准化是醒目的.在未曾难倒的自动测试下就是无须写代码.因为测试是坐在代码必须满足的需中.如果没有需求,就不曾必要实现任何东西.所以这个规格阻止我们失去实现那些没测试与于化解方案遭无需的功能.

老二独规范说明了当一个程序中,不该包含重复的代码.如果代码重复,我眷恋马上即是糟糕的软件设计的象征.随着岁月的流逝,它见面对程序造成不均等的问题,并且要代码变充分混乱
,因为我们常常不会见记得重复代码的位置.如果发现代码重复,我眷恋我们该马上去代码重复.其实这便关乎到重构了.在此处我不怕非多说了.

一般的话,测试分为2栽档次,一凡是程序员自己的测试,另外一种是客户之测试.关于客户测试,我推荐一个FIT的框架,非常科学。在此间,我们说话的TDD就是程序员测试.那么什么是程序员测试为?我以为即使是我们经常说的单元测试.既然是单元测试,在.NET里一定会因此到某些工具,目前最为红恐怕即使是自己快要介绍的NUnit了,

2.NUnit的介绍

NUnit是一个单元测试框架,专门对于.NET来形容的.其实在前边有JUnit(Java),CPPUnit(C++),他们都是xUnit的一模一样员.最初,它是于JUnit而来.现在底本子是2.2.接下来自己所用的还是因这版本.

NUnit最初是由于James W. Newkirk, Alexei A.
Vorontsov 和Philip A. Craig, 后来出集团渐渐庞大起来.在开发进程被, Kent
Beck 和Erich
Gamma2位牛人吗提供了众多帮助.看来对于NUnit还真是下了一番力了.J

NUnit是xUnit家族种之第4单主打产品,完全出于C#言语来编排,并且编写时充分利用了许多.NET的性状,比如反射,客户属性等等.

无限要的少数凡是她适合为所有.NET语言.

而你还尚无下载,可以交http://www.nunit.org/去下载.

2.1 NUnit的介绍

  
Ok,下面正式上课NUnit.在执教之前,看看几摆设图片:

     图片 1

贪图1  NUnit运行的效能

图片 2
                     图2   NUnit运行的另外一个意义

 从中我们好非常容易发现,右边是只状态条,图1凡革命的,图2是绿色的.为什么会如此吗?因为如果所有测试案例运行成功,就为绿色,反的要出一个免成功,则也革命,但也时有发生香艳的.左面的工作域内虽然是咱们写的各级一个单元测试.

透过上面的图纸,我思念你对NUnit有只究竟的摸底了.

接下去还是分为2独片,一是NUnit的布局,另外有即使是它的基本概念.

率先熟悉一下NUnit GUI的布局.

被我们还进一步看一下测试运行器窗口的布局。在右边面板的高中级,可以看测试进度修。进度条之颜色反映了测试执行的状态:

  • 绿色 描述目前所实施之测试都经

  • 黄色
    意味某些测试忽略,但是此间没有失败

  • 红色 表示有失败

脚的状态条表示下面的状态:

  • 状态.说明了现行运作测试的状态。当所有测试完了时,状态变为Completed.运行测试中,状态是Running:
    <test-name> (<test-name>是方周转的测试名称)。

  • Test
    Cases
    证明加载的次序集中测试案例的究竟个数。这也是测试树里叶子节点的个数。

  • Tests Run 已经完结的测试个数。

  • Failures
     
    及目前为止,所有测试着破产的个数.

  • Time  显示运行测试时(以秒计)

File主菜单来以下内容:

  • New
    Project
    允许而创造一个新工程。工程是一个测试程序集的集纳。这种体制为你团队多个测试程序集,并拿她们作一个组对照。

  • Open
    加载一个初的测试程序集,或一个原先保存的NUnit工程文件。

  • Close闭馆现在加载的测试程序集或本加载的NUnit工程。

  • Save
    保存现在的Nunit工程及一个文书。如果正好工作单个程序集,本菜单项允许你创造一个初的NUnit工程,并把她保存在文件里。

  • Save
    As
    同意而将现有NUnit工程作为一个文件保留。

  • Reload
    强制重载现有测试程序集或NUnit工程。NUnit-Gui自动监测现加载的测试程序集的别。

当次集转时,测试运行器还加载测试程序集。(当测试正运行时,现在加载的测试程序集不见面再加载。在测试运行之间测试程序集仅可以重加载。一个忠告:如果测试程序集依赖另外一个程序集,测试运行器不会观察外借助之主次集。对测试运行器来说,强制一个重载使举借助之次序集转可见。

  • Recent Files 
    说明5个最近以NUnit中加载的测试程序集或NUnit工程(这个列表在Windows注册表,由每个用户维护,因此而你共享你的PC,你就看而的测试)。最近先后集的数量可以使用Options菜单项修改,可以看Tool主菜单。

  • Exit退出。

  •  View菜单有以下内容:
  • Expand同稀世扩展现在培育被所挑选节点

  • Collapse 折叠现在培训被摘的节点

  • Expand
    All
    递归扩展树被所选取节点后底持有节点

  • Collapse
    All
    递归折叠树中所挑选节点后的有所节点
  • Expand
    Fixtures
    扩张树被有表示测试fixture的节点。
  • Collapse Fixtures
    折叠树被保有代表测试fixture的节点。
  • Properties
    显示树中现所选择节点的特性。
  • Tools 菜单由这些项:
  • Save Results as
    XML
    用作一XML文书保留运行测试的结果。
  • Options于您定制NUnit的一言一行。

兹探视右手,你都熟悉Run按钮和速长。这里还有一个紧跟Run按钮的Stop按钮:点击是按钮会告一段落执行刚运行的测试。进度修下面是一个文件窗口,在她上面,由以下4只标签:

  • Errors and Failures
    窗口亮失败的测试。在我们的例子里,这个窗口是拖欠。
  • Tests Not Run
    窗口展示没有博得推行的测试。
  • Console.Error
    窗口展示运行测试出的一无是处信息。这些是消息是应用程序代码应用Console.Error输出流可以输出的。

  • Console.Out窗口亮运行测试打印至Console.Error输出流的文件消息。

2.2 一些常用属性

 接下来,我将叙者框架如何使用.同时为涉嫌到一些很主要之概念,我怀念那个客户属性是特别重大之.在NUnit里,有以下几栽特性:

  • Test Fixture
  • Test

脚我用对准每种属性一一说解.

TestFixtureAttribute

   
本属性标记一个像样富含测试,当然setup和teardown方法可有可无.(关于setup
和teardown方法以后面介绍)

    做吧一个测试的类似,这个看似还有一部分范围

  • 得是Public,否则NUnit看不到它的存在.

  • 其必须产生一个差省之构造函数,否则是NUnit不会见组织它.

  • 构造函数应该没另外副作用,因为NUnit在运行时经常会面组织之看似多次,如果只要构造函数要什么副作用的话,那不是乱了.

选个例证

 1  using System;

 2  using NUnit.Framework;

 3  namespace MyTest.Tests

 4{

 5

 6  [TestFixture]

 7  public class PriceFixture

 8  {

 9    // 

10  }

11}

12

TestAttribute

 Test属性用来号一个近似(已经记为TestFixture)的之一方法是足以测试的.为了和以前的本为后相当,头4个字符(“test”)忽略大小写.(参看http://nunit.org/test.html)

斯测试方法可以定义也:       

public void MethodName()

起点可以看到,这个法无任何参数,其实测试方法必须没有参数.如果我们定义方法不对的话,这个方式不见面起于测试方法列表中.也就是说在NUnit的界面左边的工作域内,看不到这个方法.再有某些哪怕是是点子不回外参数,并且要也Public.

例如:

 1using System;

 2using NUnit.Framework;

 3

 4namespace MyTest.Tests

 5{

 6  [TestFixture]

 7  public class SuccessTests

 8  {

 9    [Test] public void Test1()

10    { /**//*  */ }

11  }

12}

13

14


一般来说,有了上面两个属性,你可以做基本的事情了.


另外,我们再对如何进行比较做一个描述。
在NUnit中,用Assert(断言)进行比较,Assert是一个类,它包括以下方法:AreEqual,AreSame,Equals, Fail,Ignore,IsFalse,IsNotNull,具体请参看NUnit的文档。

3.如何在.NET中应用NUnit

自己以举个例子,一步一步演示如何错过用NUnit.

第1步.为测试代码创建一个Visual Studio工程。

每当Microsoft Visual Studio
.NET中,让我们开始创办一个初的工。选择Visual
C#工程作为工程项目,Class
Library作为模板。将工程命名吧NUnitQuickStart.图4-1凡一个叙述本步骤的Visual
Studio .NET。

 图片 3
                            图 4-1: 创建第一个NUnit工程

第2步.增加一个NUnit框架引用

每当Microsoft Visual Studio
.NET里创建是事例时,你需要充实一个NUnit.framework.dll引用,如下:

于Solution
Explorer右击引用,然后选择增多引用

   NUnit.framework组件,在Add
Reference对话框中仍Select和OK按钮。

图4-2 描述了就步:

 图片 4
祈求 4-2: 增加一个 NUnit.framework.dll 引用到工程

第3步.为工程加一个类.

也工程加一个NumbersFixture仿佛。这里是这事例的代码。

 1图片 5using System; 
 2图片 6using NUnit.Framework; 
 3图片 7  
 4图片 8namespace NUnitQuickStart 
 5图片 9图片 10图片 11
 6图片 12            [TestFixture] 
 7图片 13            public class NumersFixture 
 8图片 14图片 15            图片 16
 9图片 17                        [Test] 
10图片 18                        public void AddTwoNumbers() 
11图片 19图片 20                        图片 21
12图片 22                                    int a=1; 
13图片 23                                    int b=2; 
14图片 24                                    int sum=a+b; 
15图片 25                                    Assert.AreEqual(sum,3); 
16图片 26                        } 
17图片 27            } 
18图片 28}
19图片 29

第4步.建立你的Visual Studio 工程,使用NUnit-Gui测试

于程序->NUnit2.2开辟NUnit-gui,加载本本工程编译的主次集.

为以Visual Studio
.NET中活动运行NUnit-Gui,你用树立NUnit-Gui作为你的启航程序:

以 Solution
Explorer里右击你的NunitQuickStart工程。

每当弹出菜单中选择属性。

在展示的对话框的左侧,点击Configuration
Properties夹

选取出现在Configuration
Properties夹下之Debugging。

每当性能框右边的Start
Action部分,选择生拉绳的Program作为Debug Mode值。

按Apply按钮

设置NUnit-gui.exe ** 当Start
Application。,你既然可键入nunit-gui.exe的全路径,也可采用浏览按钮来靠为它。

希冀4-3 帮助描述本步骤:
图片 30图片 31  图片 32

贪图 4-3:将NUnit-Gui 作为工程的测试运行器

第5步.编译运行测试.

 现在编译solution。成功编译后,开始应用程序。NUnit-Gui测试运行器出现。当您首先糟开始NUnit-Gui,它开辟时莫测试加载。从File菜单选择Oprn,浏览NUnitQuickStart.dll的路子。当你加载了测试的程序集,测试运行器为加载的主次集的测试出一个可见的呈现。在例子中,测试程序集就发生一个测试,测试程序集的构造使图4-4所展示:

 图片 33
 图 4-4: 测试程序集的测试于 NUnit-Gui中之视图

按Run按钮。树之节点变为绿色,而且测试运行器窗口及的快长变绿,绿色代表成功通过。

 

4.外的一些主干概念

 上面的事例介绍了中心的NUnit特性和功能.
TestFixture, Test, 和
Assert凡3个最好基本的特色,我们得用这些特征开展程序员测试了.但是片上,你以为就3独遥不够,比如一些上打开一个数据库连接多次,有没有产生只被它开辟一次等的办法吧?如果自身怀念管测试分类,应该什么实现为?如果我思念忽视某些测试,又应该怎样去好吗?不用担心,NUnit已经产生如此的力量了.

脚我们逐条作出回答.

SetUp/TearDown 属性

于头被的test fixture定义里,我们说test
fixture的测试是一致组正常运行时资源.在测试成功后,或是在测试执行种,或是释放或解除之前,这些健康运行时资源以一如既往确定的办法及或者需要取得与初始化.NUnit使用2只附加的属性:SetUp
TearDown,就支持这种健康的初始化/清除.我们地方的事例来叙述是功能.让咱多乘法.

 1图片 34using System; 
 2图片 35using NUnit.Framework; 
 3图片 36  
 4图片 37namespace NUnitQuickStart 
 5图片 38图片 39图片 40
 6图片 41            [TestFixture] 
 7图片 42            public class NumersFixture 
 8图片 43图片 44            图片 45
 9图片 46                        [Test] 
10图片 47                        public void AddTwoNumbers() 
11图片 48图片 49                        图片 50
12图片 51                                    int a=1; 
13图片 52                                    int b=2; 
14图片 53                                    int sum=a+b; 
15图片 54                                    Assert.AreEqual(sum,3); 
16图片 55                        } 
17图片 56                        [Test] 
18图片 57                        public void MultiplyTwoNumbers() 
19图片 58图片 59                        图片 60
20图片 61                                    int a = 1; 
21图片 62                                    int b = 2; 
22图片 63                                    int product = a * b; 
23图片 64                                    Assert.AreEqual(2, product); 
24图片 65                        } 
25图片 66  
26图片 67            } 
27图片 68
28图片 69

  
我们仔细一看,不对,有重的代码,如何去重复的代码呢?我们得取这些代码到一个独自的不二法门,然后标志者主意也SetUp
属性,这样2只测试方法可以共享对操作数的初始化了,这里是改后底代码: 

 1图片 70using System; 
 2图片 71using NUnit.Framework; 
 3图片 72  
 4图片 73namespace NUnitQuickStart 
 5图片 74图片 75图片 76
 6图片 77            [TestFixture] 
 7图片 78            public class NumersFixture 
 8图片 79图片 80            图片 81
 9图片 82                        private int a; 
10图片 83                        private int b; 
11图片 84                        [SetUp] 
12图片 85                        public void InitializeOperands() 
13图片 86图片 87                        图片 88
14图片 89                                    a = 1; 
15图片 90                                    b = 2; 
16图片 91                        } 
17图片 92  
18图片 93                        [Test] 
19图片 94                        public void AddTwoNumbers() 
20图片 95图片 96                        图片 97
21图片 98                                    int sum=a+b; 
22图片 99                                    Assert.AreEqual(sum,3); 
23图片 100                        } 
24图片 101                        [Test] 
25图片 102                        public void MultiplyTwoNumbers() 
26图片 103图片 104                        图片 105
27图片 106                                    int product = a * b; 
28图片 107                                    Assert.AreEqual(2, product); 
29图片 108                        } 
30图片 109  
31图片 110            } 
32图片 111
33图片 112

   这样NUnit将在执行每个测试前执行标记SetUp属性的方法.在本例中就是执行InitializeOperands()方法.记住,这里这个方法必须为public,不然就会有以下错误:Invalid Setup or TearDown method signature

ExpectedException

这边是一个认证这个要的测试.有的时候,我们理解一点操作会有格外出现,例如,
在实例中长除法,某个操作被0除,抛来底挺以及.NET文档描述的一样样.参看以下源代码.

1[Test]

2[ExpectedException(typeof(DivideByZeroException))]

3public void DivideByZero()

4{

5   int zero = 0;

6   int infinity = a/zero;

7   Assert.Fail("Should have gotten an exception");

8}

9

   除了[Test]性之外,
DivideByZero术来另外一个客户属性:
ExpectedException.在是特性里,你可以在实施过程被抓获你盼之酷类型,例如在本例就是DivideByZeroException.如果这个措施以从来不丢来希望异常的情况下完成了,这个测试失败.使用这特性帮助我们写程序员测试证明边界条件(Boundary
Conditions).

Ignore 属性

  
由于种种原因,有一部分测试我们不思量运行.当然,这些原因想必连你当是测试还未曾做到,这个测试在重构之中,这个测试的需求不是太明确.但若发免思量损坏测试,不然进度条可是红色的哟.怎么处置?使用Ignore属性.你可维持测试,但与此同时未运行它们.让我们标记MultiplyTwoNumbers测试方法为Ignore属性:

1[Test]

2[Ignore("Multiplication is ignored")]

3public void MultiplyTwoNumbers()

4{

5   int product = a * b;

6   Assert.AreEqual(2, product);

7}

  
运行测试,现在发生了下的出口(在图5-1显得):

 图片 113
贪图 5-1: 在一个程序员测试着采用 Ignore属性

  
Ignore特性可以附加到一个单独的测试方法,也得以增大到周测试类(TestFixture).如果Ignore性能附加到TestFixture,具备以fixture的测试都吃忽略.

TestFixtureSetUp/TestFixtureTearDown

  
有时,一组测试用之资源太昂贵.例如,数据库连接可能是一个最主要资源,在一个test
fixture的每个测试中,打开/关闭数据库连接可能那个慢.这虽是自个儿以上马波及的问题.如何解决?NUnit有同一对准类似于前方议论的SetUp/TearDown的属性:
TestFixtureSetUp/TestFixtureTearDown.适使他们名字表明的同等,这些属于性用来号为整test
fixture初始化/释放资源方法一致破的方法.

   例如,如果你想也具有test
fixture的测试共享相同之数据库连接对象,我们可以写一个开拓数据库连接的法子,标记为TestFixtureSetUp性,编写另外一个关数据库连接的点子,标记为TestFixtureTearDown属性.这里是描述是的例子.

 1using NUnit.Framework;

 2

 3[TestFixture]

 4public class DatabaseFixture

 5{

 6   [TestFixtureSetUp]

 7   public void OpenConnection()

 8   {

 9      //open the connection to the database

10   }

11 

12   [TestFixtureTearDown]

13   public void CloseConnection()

14   {

15      //close the connection to the database

16   }

17   

18   [SetUp]

19   public void CreateDatabaseObjects()

20   {

21      //insert the records into the database table

22   }

23 

24   [TearDown]

25   public void DeleteDatabaseObjects()

26   {

27      //remove the inserted records from the database table

28   }

29 

30   [Test]

31   public void ReadOneObject()

32   {

33      //load one record using the open database connection

34   }

35 

36   [Test]

37   public void ReadManyObjects()

38   {

39      //load many records using the open database connection

40   }

41}

42

43

Test Suite

   Test Suite是test case或其他test
suite的集合. 合成(Composite),模式描述了test case和test
suite之间的关系.

 参考来自NUnit的有关Suite的代码

Suite Attribute

 1图片 114namespace NUnit.Tests
 2图片 115图片 116图片 117{
 3图片 118using System;
 4图片 119  using NUnit.Framework;
 5图片 120 
 6图片 121
 7图片 122
 8图片 123  public class AllTests
 9图片 124图片 125  图片 126{
10图片 127    [Suite]
11图片 128    public static TestSuite Suite
12图片 129图片 130    图片 131{
13图片 132      get
14图片 133图片 134      图片 135{
15图片 136        TestSuite suite = new TestSuite(“All Tests”);
16图片 137        suite.Add(new OneTestCase());
17图片 138        suite.Add(new Assemblies.AssemblyTests());
18图片 139        suite.Add(new AssertionTest());
19图片 140        return suite;
20图片 141      }
21图片 142    }
22图片 143  }
23图片 144
24图片 145

Category属性

 对于测试来说,你有的上要以的分类,此属性正好就是之所以来解决是题材之。

 你可以挑选你要周转的测试类目录,也足以选取除了这些目录外的测试都得运作。在命令行环境里
/include
和/exclude来实现。在GUI环境下,就再度简便易行了,选择左边工作域里的Catagories
Tab,选择Add和Remove既好了。

以地方的例证上举行了有的改善,代码如下:

 1using System; 

 2using NUnit.Framework; 

 3  

 4namespace NUnitQuickStart 

 5{ 

 6            [TestFixture] 

 7            public class NumersFixture 

 8            { 

 9                        private int a; 

10                        private int b; 

11                        [SetUp] 

12                        public  void InitializeOperands() 

13                        { 

14                                    a = 1; 

15                                    b = 2; 

16                        } 

17  

18                        [Test] 

19                        [Category("Numbers")] 

20                        public void AddTwoNumbers() 

21                        { 

22                                    int sum=a+b; 

23                                    Assert.AreEqual(sum,3); 

24                        } 

25                        

26                        [Test] 

27                [Category("Exception")] 

28                        [ExpectedException(typeof(DivideByZeroException))] 

29                        public void DivideByZero() 

30                        { 

31                                    int zero = 0; 

32                                    int infinity = a/zero; 

33                                    Assert.Fail("Should have gotten an exception"); 

34                        } 

35                        [Test] 

36                        [Ignore("Multiplication is ignored")] 

37                        [Category("Numbers")] 

38                        public void MultiplyTwoNumbers() 

39                        { 

40                                    int product = a * b; 

41                                    Assert.AreEqual(2, product); 

42                        } 

43  

44               } 

45

        NUnit-GUI界面如图5-2:



图5-2:使用Catagories属性的界面

Explicit属性

本属性忽略一个test和test
fixture,直到它显式的选取执行。如果test和test
fixture在实践之历程遭到给发现,就大意他们。所以,这样一来进度长达显示也黄色,因为起test或test
fixture忽略了。

 例如:

  

 1图片 146
 2图片 147                        [Test,Explicit] 
 3图片 148                        [Category(“Exception”)] 
 4图片 149                        [ExpectedException(typeof(DivideByZeroException))] 
 5图片 150                        public void DivideByZero() 
 6图片 151图片 152                        图片 153
 7图片 154                                    int zero = 0; 
 8图片 155                                    int infinity = a/zero; 
 9图片 156                                    Assert.Fail(“Should have gotten an exception”); 
10图片 157                        }
11图片 158

    为什么会统筹改为这样吧?原因是Ingore属性忽略了某个test或test
fixture,那么她们而又惦记调用执行是匪可能的。那么万同等生一样上自己怀念调用被忽视的test或test
fixture怎么处置,就用Explicit属性了。我眷恋这即是内的案由吧。

Expected Exception属性

 
期望在运作时抛来一个巴之深,如果是,则测试通过,否则不经过。

参考下面的例证:

 1图片 159[Test] 
 2图片 160[ExpectedException(typeofInvalidOperationException))] 
 3图片 161public void ExpectAnException() 
 4图片 162图片 163 图片 164
 5图片 165   int zero = 0; 
 6图片 166   int infinity = a/zero; 
 7图片 167   Assert.Fail(“Should have gotten an exception”); 
 8图片 168                       
 9图片 169 } 
10图片 170

   
在比如测试着,应该抛出DivideByZeroException,但是想的凡InvalidOperationException,所以未可知由此。如果我们以[ExpectedException(typeof(InvalidOperationException))]改为[ExpectedException(typeof(DivideByZeroException))],本测试通过。

5 . 测试生命周期合约

   如果记得test
case的定义,其中一个性能是测试的独立性或切断性.SetUp/TearDown方式提供上测试隔离性的目的.SetUp保险共享的资源在每个测试运行前对初始化,TearDown确保无运行测试出的遗留副作用.
TestFixtureSetUp/TestFixtureTearDown一如既往提供相同之目的,但是也以test
fixture范围里,我们才描述的内容结合了测试框架的运行时容器(test
runner)和你写的测试期间的生命周期合约(life-cycle contract).

  
为了描述是合同,我们写一个概括的测试来验证什么艺术调用了,怎么当调用的.这里是代码:

 1using System;

 2using NUnit.Framework;

 3[TestFixture]

 4public class LifeCycleContractFixture

 5{

 6   [TestFixtureSetUp]

 7   public void FixtureSetUp()

 8   {

 9      Console.Out.WriteLine("FixtureSetUp");

10   }

11 

12   [TestFixtureTearDown]

13   public void FixtureTearDown()

14   {

15      Console.Out.WriteLine("FixtureTearDown");

16   }

17   

18   [SetUp]

19   public void SetUp()

20   {

21      Console.Out.WriteLine("SetUp");

22   }

23

24   [TearDown]

25   public void TearDown()

26   {

27      Console.Out.WriteLine("TearDown");

28   }

29 

30   [Test]

31   public void Test1()

32   {

33      Console.Out.WriteLine("Test 1");

34   }

35

36   [Test]

37   public void Test2()

38   {

39      Console.Out.WriteLine("Test 2");

40   }

41

42}

43

44

当编译和运行是测试,可以当System.Console窗口看到下面的出口:

FixtureSetUp

SetUp

Test 1

TearDown

SetUp

Test 2

TearDown

FixtureTearDown

   可以见见,
SetUp/TearDown措施调用在每个测试方法的前后.
整个fixture调用同不好TestFixtureSetUp/TestFixtureTearDown方法.

 

 下载:
1)NUnit的行使文档 下载
2)本问的PDF版 下载

3)本文的源代码 下充斥 

 

 

 

 

 

 

 

 

 

参考

1)      http://www.nunit.org

2)      James W. Newkirk and Alexei A.
Vorontsov ,Test-Driven Development in Microsoft .NET,Microsoft
Press,2003

3)      http://www.testdriven.com

4)      Kent Beck, Test-Driven
Development: By Example
,Addison-Wesley Professional, 2003

5)      Andrew Hunt ,David Thomas
,Pragmatic Unit Testing  In   C#  With NUnit
6)      NUnit中文文档:http://www.36sign.com/nunit

 

 
Last Updated:2005年6月23日
  Last Updated:2007年4月12日