• <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詳細使用方法(8)

    發表于:2011-05-08來源:不詳作者:領測軟件測試網采編點擊數: 標簽:
    Explicit屬性 本屬性忽略一個test和test fixture,直到它們顯式的選擇執行。如果test和test fixture在執行的過程中被發現,就忽略他們。所以,這樣一來進度條顯

      Explicit屬性

      本屬性忽略一個test和test fixture,直到它們顯式的選擇執行。如果test和test fixture在執行的過程中被發現,就忽略他們。所以,這樣一來進度條顯示為黃色,因為有test或test fixture忽略了。

      例如:

     

    1
    2 [Test,Explicit]
    3 [Category("Exception")]
    4 [ExpectedException(typeof(DivideByZeroException))]
    5 public void DivideByZero()
    6 {
    7 int zero = 0;
    8 int infinity = a/zero;
    9 Assert.Fail("Should have gotten an exception");
    10 }
    11

      為什么會設計成這樣呢?原因是Ingore屬性忽略了某個test或test fixture,那么他們你再想調用執行是不可能的。那么萬一有一天我想調用被忽略的test或test fixture怎么辦,就用Explicit屬性了。我想這就是其中的原因吧。

      Expected Exception屬性

      期望在運行時拋出一個期望的異常,如果是,則測試通過,否則不通過。

      參看下面的例子:

     

    1[Test]
    2[ExpectedException(typeofInvalidOperationException))]
    3public void ExpectAnException()
    4 {
    5 int zero = 0;
    6 int infinity = a/zero;
    7 Assert.Fail("Should have gotten an exception");
    8
    9 }
    10

      在本測試中,應該拋出DivideByZeroException,但是期望的是InvalidOperationException,所以不能通過。如果我們將[ExpectedException(typeof(InvalidOperationException))]改為[ExpectedException(typeof(DivideByZeroException))],本測試通過。

      5 . 測試生命周期合約

      如果記得test case的定義,其中一個屬性是測試的獨立性或隔離性.SetUp/TearDown方法提供達到測試隔離性的目的.SetUp確保共享的資源在每個測試運行前正確初始化,TearDown確保沒有運行測試產生的遺留副作用.

      TestFixtureSetUp/TestFixtureTearDown同樣提供相同的目的,但是卻在test fixture范圍里,我們剛才描述的內容組成了測試框架的運行時容器(test runner)和你寫的測試之間的生命周期合約(life-cycle contract).

      為了描述這個合約,我們寫一個簡單的測試來說明什么方法調用了,怎么合適調用的.這里是代碼:

     

    1using System;
    2using NUnit.Framework;
    3[TestFixture]
    4public class LifeCycleContractFixture
    5{
    6 [TestFixtureSetUp]
    7 public void FixtureSetUp()
    8 {
    9 Console.Out.WriteLine("FixtureSetUp");
    10 }
    11
    12 [TestFixtureTearDown]
    13 public void FixtureTearDown()
    14 {
    15 Console.Out.WriteLine("FixtureTearDown");
    16 }
    17
    18 [SetUp]
    19 public void SetUp()
    20 {
    21 Console.Out.WriteLine("SetUp");
    22 }
    23
    24 [TearDown]
    25 public void TearDown()
    26 {
    27 Console.Out.WriteLine("TearDown");
    28 }
    29
    30 [Test]
    31 public void Test1()
    32 {
    33 Console.Out.WriteLine("Test 1");
    34 }
    35
    36 [Test]
    37 public void Test2()
    38 {
    39 Console.Out.WriteLine("Test 2");
    40 }
    41
    42}
    43
    44

      當編譯和運行這個測試,可以在System.Console窗口看到下面的輸出:

      FixtureSetUpSetUpTest 1TearDownSetUpTest 2TearDownFixtureTearDown

      可以看到, SetUp/TearDown方法調用在每個測試方法的前后. 整個fixture調用一次TestFixtureSetUp/TestFixtureTearDown方法.

      下載:

      1)NUnit的應用文檔下載

      2)本文的PDF版下載

      3)本文的源代碼 下載

      參考

      1) http://www.nunit.org

      2) James W. Newkirk and Alexei A. Vorontsov ,Test-Driven Development in Microsoft .NET,Microsoft Press,2003

      3) http://www.testdriven.com

      4) Kent Beck, Test-Driven Development: By Example ,Addison-Wesley Professional, 2003

      5) Andrew Hunt ,David Thomas ,Pragmatic Unit Testing In C# With NUnit 

     

     

     

     

     

     

     

     

    原文轉自: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>