軟件測(cè)試:.Net下測(cè)試的相關(guān)知識(shí)

字號(hào):

屬性
    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()
    {
    }