屬性
TestDriven.NET支持多種單元測(cè)試框架,像 NUnit,MbUnit,MS Team System,這里我選擇了最為經(jīng)典的NUnit單元測(cè)試框架來(lái)介紹TestDriven.NET所支持的一些重要的屬性。TestDriven.NET 其實(shí)已經(jīng)支持大部分NUnit的屬性,但是有些屬性現(xiàn)在還不支持。
在我們使用TestDriven.NET測(cè)試前,項(xiàng)目必須引用框架的程序集,即nunit.framework.dll,并且在每個(gè)包含測(cè)試的源文件中必須使用using語(yǔ)句引用該程序集,像這樣:using NUnit.Framework; 在NUnit中,所有的屬性都包含在Nunit.Framework命名空間里。
首先我們依次熟悉一下這些屬性。
1.TestFixtureAttribute
這個(gè)屬性用來(lái)修飾測(cè)試類(lèi),表示這個(gè)類(lèi)包含了測(cè)試方法。注意一下使用這個(gè)屬性修飾類(lèi)有一些限制:這個(gè)類(lèi)必須是public,必須有一個(gè)缺省的構(gòu)造函數(shù)。
using System;
using NUnit.Framework;
namespace TestDrivenNET
{
[TestFixture]
public class YJingLeeFixture
{
//......
}
}
2.TestAttribute
這個(gè)屬性標(biāo)記類(lèi)的某一方法為一個(gè)測(cè)試方法,此類(lèi)已經(jīng)標(biāo)記為一個(gè)TestFixture。一個(gè)測(cè)試方法的簽名定義如下:
[Test]
public void TestMethod()
{
}注意這個(gè)方法必須沒(méi)有參數(shù)。如果程序員將測(cè)試方法標(biāo)記為不正確的簽名,它不會(huì)運(yùn)行。
3.SetUpAttribute
這個(gè)屬性用來(lái)修飾方法,修飾后這個(gè)方法在每個(gè)測(cè)試方法被調(diào)用之前運(yùn)行的,我們可以用它來(lái)重新設(shè)置一些變量,在每個(gè)方法運(yùn)行之前賦值。
[SetUp]
public void Init()
{
}
4.TearDownAttribute
這個(gè)屬性用來(lái)修飾方法,說(shuō)明這個(gè)方法是在每個(gè)測(cè)試方法被調(diào)用完之后運(yùn)行的,我們可以用來(lái)釋放一些暫存的變量。
[TearDown]
public void Dispose()
{
}
5.SetUpFixtureAttribute
這個(gè)屬性這個(gè)屬性用來(lái)修飾類(lèi),這個(gè)類(lèi)包含了SetUpAttribute或者TearDownAttribute屬性,必須是public和一個(gè)缺省的構(gòu)造函數(shù)。只要使用這個(gè)屬性,在其命名空間下,運(yùn)行測(cè)試則首先運(yùn)行其中SetUpAttribute修飾的方法,在運(yùn)行測(cè)試結(jié)束則運(yùn)行其中 TearDownAttribute修飾的方法。注意一個(gè)命名空間下只有一個(gè)SetUpFixtureAttribute,如果這個(gè)屬性在整個(gè)程序集下定義,則在整個(gè)程序集下有效。我們常常用它來(lái)設(shè)置全局的條件。
[SetUpFixture]
public class MySetUpClass
{
[SetUp]
public void RunBeforeAnyTests()
{
}
[TearDown]
public void RunAfterAnyTests()
{
}
}
6.TestFixtureSetUpAttribute
這個(gè)屬性用來(lái)修飾方法,修飾后這個(gè)方法在fixture任何測(cè)試執(zhí)行之前運(yùn)行,我們常常用來(lái)初始化一些對(duì)象等,類(lèi)似于類(lèi)中的構(gòu)造函數(shù)。
[TestFixtureSetUp]
public void FixtureInit()
{
}
7.TestFixtureTearDownAttribute
這個(gè)屬性用來(lái)修飾方法,修飾后這個(gè)方法在fixture任何測(cè)試執(zhí)行之后運(yùn)行,我們常常用來(lái)釋放一些資源。
[TestFixtureTearDown]
public void FixtureDispose()
{
}
TestDriven.NET支持多種單元測(cè)試框架,像 NUnit,MbUnit,MS Team System,這里我選擇了最為經(jīng)典的NUnit單元測(cè)試框架來(lái)介紹TestDriven.NET所支持的一些重要的屬性。TestDriven.NET 其實(shí)已經(jīng)支持大部分NUnit的屬性,但是有些屬性現(xiàn)在還不支持。
在我們使用TestDriven.NET測(cè)試前,項(xiàng)目必須引用框架的程序集,即nunit.framework.dll,并且在每個(gè)包含測(cè)試的源文件中必須使用using語(yǔ)句引用該程序集,像這樣:using NUnit.Framework; 在NUnit中,所有的屬性都包含在Nunit.Framework命名空間里。
首先我們依次熟悉一下這些屬性。
1.TestFixtureAttribute
這個(gè)屬性用來(lái)修飾測(cè)試類(lèi),表示這個(gè)類(lèi)包含了測(cè)試方法。注意一下使用這個(gè)屬性修飾類(lèi)有一些限制:這個(gè)類(lèi)必須是public,必須有一個(gè)缺省的構(gòu)造函數(shù)。
using System;
using NUnit.Framework;
namespace TestDrivenNET
{
[TestFixture]
public class YJingLeeFixture
{
//......
}
}
2.TestAttribute
這個(gè)屬性標(biāo)記類(lèi)的某一方法為一個(gè)測(cè)試方法,此類(lèi)已經(jīng)標(biāo)記為一個(gè)TestFixture。一個(gè)測(cè)試方法的簽名定義如下:
[Test]
public void TestMethod()
{
}注意這個(gè)方法必須沒(méi)有參數(shù)。如果程序員將測(cè)試方法標(biāo)記為不正確的簽名,它不會(huì)運(yùn)行。
3.SetUpAttribute
這個(gè)屬性用來(lái)修飾方法,修飾后這個(gè)方法在每個(gè)測(cè)試方法被調(diào)用之前運(yùn)行的,我們可以用它來(lái)重新設(shè)置一些變量,在每個(gè)方法運(yùn)行之前賦值。
[SetUp]
public void Init()
{
}
4.TearDownAttribute
這個(gè)屬性用來(lái)修飾方法,說(shuō)明這個(gè)方法是在每個(gè)測(cè)試方法被調(diào)用完之后運(yùn)行的,我們可以用來(lái)釋放一些暫存的變量。
[TearDown]
public void Dispose()
{
}
5.SetUpFixtureAttribute
這個(gè)屬性這個(gè)屬性用來(lái)修飾類(lèi),這個(gè)類(lèi)包含了SetUpAttribute或者TearDownAttribute屬性,必須是public和一個(gè)缺省的構(gòu)造函數(shù)。只要使用這個(gè)屬性,在其命名空間下,運(yùn)行測(cè)試則首先運(yùn)行其中SetUpAttribute修飾的方法,在運(yùn)行測(cè)試結(jié)束則運(yùn)行其中 TearDownAttribute修飾的方法。注意一個(gè)命名空間下只有一個(gè)SetUpFixtureAttribute,如果這個(gè)屬性在整個(gè)程序集下定義,則在整個(gè)程序集下有效。我們常常用它來(lái)設(shè)置全局的條件。
[SetUpFixture]
public class MySetUpClass
{
[SetUp]
public void RunBeforeAnyTests()
{
}
[TearDown]
public void RunAfterAnyTests()
{
}
}
6.TestFixtureSetUpAttribute
這個(gè)屬性用來(lái)修飾方法,修飾后這個(gè)方法在fixture任何測(cè)試執(zhí)行之前運(yùn)行,我們常常用來(lái)初始化一些對(duì)象等,類(lèi)似于類(lèi)中的構(gòu)造函數(shù)。
[TestFixtureSetUp]
public void FixtureInit()
{
}
7.TestFixtureTearDownAttribute
這個(gè)屬性用來(lái)修飾方法,修飾后這個(gè)方法在fixture任何測(cè)試執(zhí)行之后運(yùn)行,我們常常用來(lái)釋放一些資源。
[TestFixtureTearDown]
public void FixtureDispose()
{
}