您的位置:軟件測(cè)試 > 開(kāi)源軟件測(cè)試 > 開(kāi)源單元測(cè)試工具 > Nunit
NUnit 2.2.6學(xué)習(xí)筆記 VS.net
作者:網(wǎng)絡(luò)轉(zhuǎn)載 發(fā)布時(shí)間:[ 2013/1/5 13:30:01 ] 推薦標(biāo)簽:

代碼比較簡(jiǎn)單,沒(méi)什么可說(shuō)的吧?下邊是C#代碼:
  using System;
  using System.Collections.Generic;
  using System.Text;

  namespace NUnitCS
  {
    public class Book
    {
      private string pid = null;
      private string pname = null;

      public string id
      {
        get
        {
          return pid;
        }

        set
        {
          pid = value;
        }
      }

      public string name
      {
        get
        {
          return pname;
        }

        set
        {
          pname = value;
        }
      }
    }
  }
也沒(méi)什么可說(shuō)的吧?下邊是J#代碼:
  package NUnitJS;

  public class Book
  {
    private String pid = null;
    private String pname = null;

    /** @property */
    public void set_id(String value)
    {
      pid = value;
    }
    /** @property */
    public String get_id()
    {
      return pid;
    }

    /** @property */
    public void set_name(String value)
    {
      pname = value;
    }
    /** @property */
    public String get_name()
    {
      return pname;
    }
  }

可以看到,J#代碼與VB和C#代碼有些不同,因?yàn)镴#的語(yǔ)法是從Java演變過(guò)來(lái)的,所以其屬性在定義時(shí)被拆成了set_XXX和get_XXX這樣的兩個(gè)方法。但僅有set_XXX和get_XXX這樣的兩個(gè)方法還不夠,還需要使用@property指令進(jìn)行說(shuō)明。雖然用不用@property指令在調(diào)用時(shí)也沒(méi)什么區(qū)別,但你可以嘗試將變量pid和pname更名為id和name,重新編譯;而后再將@property指令去掉,再重新編譯。真的不一樣。
至此,用于測(cè)試的類(lèi)編寫(xiě)完成了。

四、編寫(xiě)測(cè)試用例

這里只用了一個(gè)類(lèi)進(jìn)行測(cè)試,名為BookTest,以前這樣的類(lèi)可能需要繼承NUnit.Framework.TestCase類(lèi),但現(xiàn)在只需要對(duì)該類(lèi)使用TestFixture屬性進(jìn)行標(biāo)識(shí)即可,而無(wú)須繼承了。BookTest類(lèi)包含兩個(gè)用例,分別對(duì)應(yīng)該類(lèi)的testId和testName方法,即每個(gè)方法實(shí)現(xiàn)了一個(gè)測(cè)試用例。注意,在NUnit中,這些用來(lái)實(shí)現(xiàn)測(cè)試用例的方法有兩種手段進(jìn)行標(biāo)識(shí):一個(gè)是以testXXX的格式來(lái)命名,一個(gè)是使用Test屬性進(jìn)行標(biāo)識(shí)。此外,BookTest還有Init和Dispose這兩個(gè)方法,并分別使用SetUp和TearDown屬性來(lái)進(jìn)行標(biāo)識(shí),前者在每個(gè)測(cè)試方法開(kāi)始之前執(zhí)行,多用來(lái)做初始化;后者在每個(gè)測(cè)試方法完成之后執(zhí)行,多用來(lái)清理資源。注意,這兩個(gè)方法的名稱(chēng)并沒(méi)有什么限制,但必須用SetUp和TearDown屬性進(jìn)行標(biāo)識(shí)。另外,NUnit還提供了TestFixtureSetUp和TestFixtureTearDown屬性,功能與SetUp和TearDown類(lèi)似,但前者是在所有用例執(zhí)行之前做初始化、之后做清理,而后者是在每個(gè)用例執(zhí)行之前做初始化、之后做清理。下面開(kāi)始編寫(xiě)B(tài)ookTest。

點(diǎn)擊菜單“項(xiàng)目”->“添加類(lèi)”,打開(kāi)“添加新項(xiàng)”對(duì)話框,將名稱(chēng)改為BookTest.vb或BookTest.cs、BookTest.jsl,然后點(diǎn)擊“添加”按鈕創(chuàng)建該類(lèi)。修改代碼,VB代碼如下:

Imports NUnit.Framework

  <TestFixture()> _
  Public Class BookTest
    Dim bo As Book = Nothing

    <SetUp()> _
    Public Sub Init()
      Console.WriteLine("測(cè)試開(kāi)始!")
      bo = New Book
      Console.WriteLine("book對(duì)象被初始化!")
    End Sub

    <Test()> _
    Public Sub testId()
      bo.id = "001" '設(shè)置id屬性的值為
      '使用Assert查看id屬性的值是否為
      Assert.AreEqual("001", bo.id)
      Console.WriteLine("id屬性被測(cè)試!")
    End Sub

    <Test()> _
    Public Sub testName()
      bo.name = "ASP" '設(shè)置name屬性的值為ASP
      '使用Assert查看name屬性的值是否為JSP,這是個(gè)必然出現(xiàn)錯(cuò)誤的測(cè)試
      Assert.AreEqual("JSP", bo.name)
      Console.WriteLine("name屬性被測(cè)試!")
    End Sub

    <TearDown()> _
    Public Sub Dispose()
      Console.WriteLine("book對(duì)象將被清理!")
      bo = Nothing
      Console.WriteLine("測(cè)試結(jié)束!")
    End Sub
  End Class

這里Init和Dispose方法沒(méi)什么好說(shuō)的,是執(zhí)行了對(duì)book對(duì)象的初始化和清理,不過(guò)testId和testName需要說(shuō)明一下。前者是在對(duì)bo的id屬性進(jìn)行測(cè)試,首先賦值為”001”,然后使用Assert的AreEqual方法查看id屬性中存放的值是否是期待的值,由于我的期待值也是”001”,所以執(zhí)行后這個(gè)用例應(yīng)該是成功的;后者則是對(duì)bo的name屬性進(jìn)行測(cè)試,也是首先賦值為”ASP”,然后使用Assert的AreEqual方法查看其值是否是期待的,由于我特意將期待值設(shè)定為根本不可能的”JSP”,因此這個(gè)用例執(zhí)行后會(huì)出現(xiàn)一個(gè)錯(cuò)誤。但請(qǐng)注意,由于我是特意要讓測(cè)試出現(xiàn)錯(cuò)誤,所以將期待值設(shè)定成了不可能的值,如果你是測(cè)試人員,請(qǐng)千萬(wàn)不要這么做,否則如果別的地方導(dǎo)致了錯(cuò)誤,很容易給自己造成不必要的麻煩。

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