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

代碼比較簡單,沒什么可說的吧?下邊是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;
        }
      }
    }
  }
也沒什么可說的吧?下邊是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#代碼有些不同,因為J#的語法是從Java演變過來的,所以其屬性在定義時被拆成了set_XXX和get_XXX這樣的兩個方法。但僅有set_XXX和get_XXX這樣的兩個方法還不夠,還需要使用@property指令進行說明。雖然用不用@property指令在調(diào)用時也沒什么區(qū)別,但你可以嘗試將變量pid和pname更名為id和name,重新編譯;而后再將@property指令去掉,再重新編譯。真的不一樣。
至此,用于測試的類編寫完成了。

四、編寫測試用例

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

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

Imports NUnit.Framework

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

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

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

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

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

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

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