[翻譯]NUnit---TearDown and SetUpFixture and Test Attributes(二十)

TearDownAttribute (NUnit 2.0 / 2.5)html

  本特性在TestFixture內部使用,每一個測試方法執行後調用的方法集。也能夠在SetUpFixture中使用,在同一命名空間或者程序集種相同的功能。程序員

  NUnit2.5以前,類只能有一個TearDown方法且必須是示例方法。dom

  從NUnit2.5開始,TearDown方法可使靜態或者示例方法,也能夠在一個夾具中定義多個TearDown方法。一般多個TearDown方法只會在不一樣層級的繼承中定義。ide

  若是全部SetUp方法都正確執行,那麼TearDown方法就必定執行。若是SetUp方法失敗或者拋出異常則TearDown不會執行。測試

Example:spa

namespace NUnit.Tests
{
  using System;
  using NUnit.Framework;

  [TestFixture]
  public class SuccessTests
  {
    [SetUp] public void Init()
    { /* ... */ }

    [TearDown] public void Cleanup()
    { /* ... */ }

    [Test] public void Add()
    { /* ... */ }
  }
}

繼承(Inheritance)code

  TearDown特性能夠從任何基類繼承而來。但若是一個基類定義了一個TearDown方法,則這個TearDown方法會在每一個繼承類的測試方法執行後被調用。htm

  NUnit2.5以前,你只可以有一個TearDown方法。若是你須要在基類中使用TearDown方法而且在繼承類中添加更多的TearDown方法,則須要在手動調用基類的TearDown方法。在NUnit2.5,能夠經過在基類定義TearDown方法同時在繼承類中定義TearDown方法達到這個目的。blog

Note:儘管能夠再同一個類中定義多個TearDown方法,但不推薦這麼作(由於TearDown同一類多個TearDown方法的執行順序是不定的)。排序

 

TestAttribute (NUnit 2.0 / 2.5 / 2.6)

  本特性用於在TestFixture類中標記一個方法做爲一個測試用例。NUnit前期版本保持向後兼容,一個測試方法也能夠經過「test"4個字符來辨認。這個能夠經過配置文件中的選項實現。

  NUnit2.5以前,測試方法形如:

    public void MethodName()

  NUnit2.5開始,靜態方法也能夠用做測試用例。

    public static void MethodName()。

  另外,在NUnit2.5中,測試方法能夠有參數和返回值,NUnit提供參數值以及怎樣處理返回值的方法。獲取更多信息,參考ParameterizedTests.

  參數化測試方法能夠是泛型,NUnit可以從提供的數據類型推斷出合適的參數類型。從NUnit2.6.2開始,.NET4.5版本的測試方法能夠標記爲asyc,NUnit在記錄結果前等待方法執行完畢而且繼續下一個測試。若是沒有返回值,Asyc測試方法可能返回void或者Task。若是返回一個T類型的值,Asyc方法返回一個Task<T>值。

  若是程序員用不正確的簽名標記一個測試方法,測試方法被認爲不可執行並在GUI或者控制檯界面顯示結果。在GUI,這些測試標記爲紅色。

      在下面的示例中爲NUnit無參數測試用例

namespace NUnit.Tests
{
  using System;
  using NUnit.Framework;

  [TestFixture]
  public class SuccessTests
  {
    [Test] public void Add()
    { /* ... */ }

    public void TestSubtract()
    { /* backwards compatibility */ }
  }
}

Imports System
Imports Nunit.Framework

Namespace Nunit.Tests

  <TestFixture()> Public Class SuccessTests
    <Test()> Public Sub Add()
    ' ...
    End Sub
  End Class
End Namespace

#using <Nunit.Framework.dll>
using namespace System;
using namespace NUnit::Framework;

namespace NUnitTests
{
  [TestFixture]
  public __gc class SuccessTests
  {
    [Test] void Add();
  };
}

#include "cppsample.h"

namespace NUnitTests {
  // ...
}

package NUnit.Tests;

import System.*;
import NUnit.Framework.TestFixture;


/** @attribute NUnit.Framework.TestFixture() */
public class SuccessTests
{
  /** @attribute NUnit.Framework.Test() */
  public void Add()
  { /* ... */ }
}
View Code

  

Parameterized Tests

  NUnit2.5支持帶參數的測試用例。測試方法能夠帶參數而且有多個特性能夠指定NUnit提供參數。

  多個參數集合會產生多個測試用例。在加載測試用例時建立全部參數,故若是須要在GUI顯示並可選。

  一些特性運行指定內置參數(直接在聲明特性時指定),其餘特性須要使用一個方法、屬性、字段來保存參數。另外,一些特性爲全部測試用例的所有參數提供數據,一些爲單個參數提供數據。如此,產生四組特性以下:

  Complete Test Cases Data for One Argument
Inline TestCaseAttribute RandomAttribute
RangeAttribute
ValuesAttribute
Separate TestCaseSourceAttribute ValueSourceAttribute

  另外,當數據指定爲單個參數,能夠在方法上添加特殊的特性告訴NUnit怎樣合併參數。當前提供以下特性:

執行順序

  在NUnit2.5,單個測試用例按照字母順序排序並執行。在NUnit2.5.1,單個測用例再也不排序,按照NUnit發現的順序執行。這個執行順序不是按照特性的詞法順序,每每由於不一樣的編譯器和CLR版本不一樣而不一樣。

  順序規則以下:

    1.若是在一個TestCaseSource特性中指定全部參數值,測試用例的排序保存不變。

    2.若是每一個參數有一個Values, ValueSource ,Range特性並指定Sequential策略,或職業一個參數;保持排序不變

    3.在全部測試用例中,包括使用多個TestCase特性或者多個類型特性組合,測試用例的順序是未知的。

相關文章
相關標籤/搜索