• <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>
  • NUnit詳細使用方法(6)

    發表于:2011-05-08來源:不詳作者:領測軟件測試網采編點擊數: 標簽:
    ExpectedException 這里是一個驗證這個假設的測試.有的時候,我們知道某些操作會有異常出現,例如, 在實例中增加除法,某個操作被0除,拋出的異常和.NET文檔描述

      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顯示):

      圖 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的代碼

    原文轉自:http://www.kjueaiud.com

    老湿亚洲永久精品ww47香蕉图片_日韩欧美中文字幕北美法律_国产AV永久无码天堂影院_久久婷婷综合色丁香五月

  • <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>