您的位置:软件测试 > 开源软件测试 > 开源单元测试工具 > Nunit
在.NET环境中使用单元测试工具Nunit
作者:网络转载 发布时间:[ 2013/4/8 15:59:45 ] 推荐标签:

  Test Attribute简介

  Test attribute主要用来标示在text fixture中的method,表示这个method需要被Test Runner application所执行。有Test attribute的method必须是public的,并且必须return void,也没有任何传入的参数。如果没有符合这些规定,在Test Runner GUI之中是不会列出这个method的,而且在执行Unit Test的时候也不会执行这个method。上面的程序代码示范了使用这个attribute的方法。

  SetUp 和 Teardown Attributes简介

  在写Unit Tests的时候,有时你会需要在执行每一个test method之前(或之后)先作一些预备或善后工作。当然,你可以写一个private的method,然后在每一个test method的一开头或末端呼叫这个特别的method。或者,你可以使用我们要介绍的SetUp及Teardown Attributes来达到相同的目的。如同这两个Attributes的名字的意思,有Setup Attribute的method会在该TextFixture中的每一个test method被执行之前先被Test Runner所执行,而有Teardown Attribute的method则会在每一个test method被执行之后被Test Runner所执行。一般来说,Setup Attribute及Teardown Attribute被用来预备一些必须的objects(对象),例如database connection、等等。上面的程序代码示范了使用这个attribute的方法。

  ExpectedException Attributes简介

  有的时候,你希望你的程序在某些特殊的条件下会产生一些特定的exception。要用Unit Test来测试程序是否如预期的产生exception,你可以用一个try..catch的程序区段来catch(捕捉)这个exception,然后再设一个boolean的值来证明exception的确发生了。这个方法固然可行,但是太花费功夫。事实上,你应该使用这个 ExpectedException attribute来标示某个method应该产生哪一个exception,如同下面的范例所示:

  namespace UnitTestingExamples
  {
  using System;
  using NUnit.Framework;

  [TestFixture]
  public class SomeTests
  {

  [Test]
  [ExpectedException(typeof(InvalidOperationException))]
  public void Test1()
  {

  // Do something that throws an InvalidOperationException

  }

  }

  }

  如果上面的程序被执行的时候,如果一旦exception发生,而且这个exception的type(类型信息)是 InvalidOperationException 的话,这个test会顺利通过验证。如果你预期你的程序代码会产生多个exception的话,你也可以一次使用多个 ExpectedException attribute。但是,一个test method应该只测试一件事情,一次测试多个功能是不好的做法,你应该尽量避免之。另外,这个attributes并不会检查inheirtance的关系,也是说,如果你的程序代码产生的exception是继承自InvalidOperationException 的subclass(子类化)的话,这个test执行的时候将不会通过验证。简而言之,当你使用这个attribute的时候,你要明确的指明所预期的 exception是哪个type(类型信息)的。

  Ignore Attributes简介

  这个attribute你大概不会经常用的,但是一旦需要的时候,这个attribute是很方便使用的。你可以使用这个attribute来标示某个test method,叫Test Runner在执行的时候,略过这个method不要执行。使用这个Ignore attribute的方法如下:

  namespace UnitTestingExamples
  {
  using System;

  using NUnit.Framework;

  [TestFixture]
  public class SomeTests
  {

  [Test]
  [Ignore("We're skipping this one for now.")]
  public void TestOne()
  {

  // Do something...

  }

  }

  }

  如果你想要暂时性的comment out一个test method的话,你应该考虑使用这个attribute。这个attribute让你保留你的test method,在Test Runner的执行结果里面,也会提醒你这个被略过的test method的存在。

  NUnit Assert Class简介

  除了以上所提到的这些用来标示测试程序所在的attributes之外,NUnit还有一个重要的class你应该要知道如何使用。这个class是Assert class。Assert class提供了一系列的static methods,让你可以用来验证主要程序的结果与你所预期的是否一样。Assert class代替了旧的Assertion class,下面是这个类的方法:

  Assert.IsTrue( bool );

  Assert.IsFalse( bool );

  Assert.IsNull( bool );

  Assert.IsNotNull( bool );

  Assert.AreSame( object, object )

  Assert.AreEqual( object, object );

  Assert.AreEqual( int, int );

  Assert.AreEqual( float, float, float );

  Assert.AreEqual( double, double, double );

  Assert.Fail();

上一页1234下一页
软件测试工具 | 联系我们 | 投诉建议 | 诚聘英才 | 申请使用列表 | 网站地图
沪ICP备07036474 2003-2017 版权所有 上海泽众软件科技有限公司 Shanghai ZeZhong Software Co.,Ltd