2010-08-24 62 views
4

是否有可能在一個燈具中有多個[SetupTest]?不同配置的多個[SetupTest]

我正在使用Selenium和nUnit,並希望能夠指定用戶想要測試的瀏覽器。

我有一個簡單的用戶GUI來選擇測試運行,但是,我知道將來我們希望將它掛鉤到巡航控制以自動運行測試。理想情況下,我想要在我們的GUI和NUnit GUI上運行的測試。

回答

0

我懷疑你可以使用NUnit 2.5中引入的參數化測試來做你想做的事情,但我並不完全清楚你想在這裏做什麼。但是,你可以定義夾具,並將它帶在其構造一個瀏覽器變量,然後使用參數化的TestFixture屬性,如

TextFixture["Firefox"] 
TestFixture["Chrome"] 
public class ParameterizedTestFixture { 
    //Constructor 
    public ParameterizedTestFixture(string Browser) { 
    //set fixture variables relating to browser treatment 
    } 
    //rest of class 
} 

NUnit Documentation獲取更多信息。

Setup屬性標識在每次測試之前運行的方法。只有每個測試夾具有一個安裝程序纔有意義 - 在每次測試運行之前將其視爲「重置」或「準備」。

6

是否有可能在夾具中有多個[SetupTest]?編號

可以在基類中定義所有測試,讓多個Fixture繼承測試,然後在運行時選擇一個與環境相關的fixture類型。

下面是我用於[TestFixtureSetup]的庫存示例。相同的原理適用於所有設置屬性。請注意,我只將[TestFixture]放在子類上。由於基礎「TestClass」沒有完整的設置代碼,因此不需要直接運行測試。

public class TestClass 
{ 
    public virtual void TestFixtureSetUp() 
    { 
     // environment independent code... 
    } 

    [Test] 
    public void Test1() { Console.WriteLine("Test1 pass."); } 

    // More Environment independent tests... 
} 

[TestFixture] 
public class BrowserFixture : TestClass 
{ 
    [TestFixtureSetUp] 
    public override void TestFixtureSetUp() 
    { 
     base.TestFixtureSetUp(); 
     // environment dependent code... 
    } 
} 

[TestFixture] 
public class GUIFixture : TestClass 
{ 
    [TestFixtureSetUp] 
    public override void TestFixtureSetUp() 
    { 
     base.TestFixtureSetUp(); 
     // environment dependent code... 
    } 
} 
相關問題