您的位置:軟件測(cè)試 > 開源軟件測(cè)試 > 開源單元測(cè)試工具 > Nunit
在.NET環(huán)境中使用單元測(cè)試工具Nunit
作者:網(wǎng)絡(luò)轉(zhuǎn)載 發(fā)布時(shí)間:[ 2013/4/8 15:59:45 ] 推薦標(biāo)簽:

  Test Attribute簡(jiǎn)介

  Test attribute主要用來(lái)標(biāo)示在text fixture中的method,表示這個(gè)method需要被Test Runner application所執(zhí)行。有Test attribute的method必須是public的,并且必須return void,也沒(méi)有任何傳入的參數(shù)。如果沒(méi)有符合這些規(guī)定,在Test Runner GUI之中是不會(huì)列出這個(gè)method的,而且在執(zhí)行Unit Test的時(shí)候也不會(huì)執(zhí)行這個(gè)method。上面的程序代碼示范了使用這個(gè)attribute的方法。

  SetUp 和 Teardown Attributes簡(jiǎn)介

  在寫Unit Tests的時(shí)候,有時(shí)你會(huì)需要在執(zhí)行每一個(gè)test method之前(或之后)先作一些預(yù)備或善后工作。當(dāng)然,你可以寫一個(gè)private的method,然后在每一個(gè)test method的一開頭或末端呼叫這個(gè)特別的method;蛘,你可以使用我們要介紹的SetUp及Teardown Attributes來(lái)達(dá)到相同的目的。如同這兩個(gè)Attributes的名字的意思,有Setup Attribute的method會(huì)在該TextFixture中的每一個(gè)test method被執(zhí)行之前先被Test Runner所執(zhí)行,而有Teardown Attribute的method則會(huì)在每一個(gè)test method被執(zhí)行之后被Test Runner所執(zhí)行。一般來(lái)說(shuō),Setup Attribute及Teardown Attribute被用來(lái)預(yù)備一些必須的objects(對(duì)象),例如database connection、等等。上面的程序代碼示范了使用這個(gè)attribute的方法。

  ExpectedException Attributes簡(jiǎn)介

  有的時(shí)候,你希望你的程序在某些特殊的條件下會(huì)產(chǎn)生一些特定的exception。要用Unit Test來(lái)測(cè)試程序是否如預(yù)期的產(chǎn)生exception,你可以用一個(gè)try..catch的程序區(qū)段來(lái)catch(捕捉)這個(gè)exception,然后再設(shè)一個(gè)boolean的值來(lái)證明exception的確發(fā)生了。這個(gè)方法固然可行,但是太花費(fèi)功夫。事實(shí)上,你應(yīng)該使用這個(gè) ExpectedException attribute來(lái)標(biāo)示某個(gè)method應(yīng)該產(chǎn)生哪一個(gè)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

  }

  }

  }

  如果上面的程序被執(zhí)行的時(shí)候,如果一旦exception發(fā)生,而且這個(gè)exception的type(類型信息)是 InvalidOperationException 的話,這個(gè)test會(huì)順利通過(guò)驗(yàn)證。如果你預(yù)期你的程序代碼會(huì)產(chǎn)生多個(gè)exception的話,你也可以一次使用多個(gè) ExpectedException attribute。但是,一個(gè)test method應(yīng)該只測(cè)試一件事情,一次測(cè)試多個(gè)功能是不好的做法,你應(yīng)該盡量避免之。另外,這個(gè)attributes并不會(huì)檢查inheirtance的關(guān)系,也是說(shuō),如果你的程序代碼產(chǎn)生的exception是繼承自InvalidOperationException 的subclass(子類化)的話,這個(gè)test執(zhí)行的時(shí)候?qū)⒉粫?huì)通過(guò)驗(yàn)證。簡(jiǎn)而言之,當(dāng)你使用這個(gè)attribute的時(shí)候,你要明確的指明所預(yù)期的 exception是哪個(gè)type(類型信息)的。

  Ignore Attributes簡(jiǎn)介

  這個(gè)attribute你大概不會(huì)經(jīng)常用的,但是一旦需要的時(shí)候,這個(gè)attribute是很方便使用的。你可以使用這個(gè)attribute來(lái)標(biāo)示某個(gè)test method,叫Test Runner在執(zhí)行的時(shí)候,略過(guò)這個(gè)method不要執(zhí)行。使用這個(gè)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...

  }

  }

  }

  如果你想要暫時(shí)性的comment out一個(gè)test method的話,你應(yīng)該考慮使用這個(gè)attribute。這個(gè)attribute讓你保留你的test method,在Test Runner的執(zhí)行結(jié)果里面,也會(huì)提醒你這個(gè)被略過(guò)的test method的存在。

  NUnit Assert Class簡(jiǎn)介

  除了以上所提到的這些用來(lái)標(biāo)示測(cè)試程序所在的attributes之外,NUnit還有一個(gè)重要的class你應(yīng)該要知道如何使用。這個(gè)class是Assert class。Assert class提供了一系列的static methods,讓你可以用來(lái)驗(yàn)證主要程序的結(jié)果與你所預(yù)期的是否一樣。Assert class代替了舊的Assertion class,下面是這個(gè)類的方法:

  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();

上一頁(yè)1234下一頁(yè)
軟件測(cè)試工具 | 聯(lián)系我們 | 投訴建議 | 誠(chéng)聘英才 | 申請(qǐng)使用列表 | 網(wǎng)站地圖
滬ICP備07036474 2003-2017 版權(quán)所有 上海澤眾軟件科技有限公司 Shanghai ZeZhong Software Co.,Ltd