2014-09-01 193 views
1

我想執行一些nunit/C#測試。我正在瀏覽器上使用webdriver進行測試。我想要做的是按照幾個平臺和幾個設備的順序執行我的測試。我試着用[TestFixture(「android」,「Android」,「LG Nexus 4」)] [TestFixture(「android」,「Samsung Galaxy S III」)]和我的類的構造函數。但它不起作用。你能幫我在這裏嗎?在nunit中按順序執行測試

[TestFixture("android", "Android", "LG Nexus 4")] 
[TestFixture("android", "Samsung Galaxy S III")] 
public class Multi 
{ 
    private IWebDriver driver; 
    private string _browsername; 
    private string _platform; 
    private string _device; 

    public void Multi(string browsername, string platform, string device) 
    { 
     _browsername = browsername; 
     _platform = platform; 
     _device = device; 

    } 

    [SetUp] 
    public void Init() 
    { 
     DesiredCapabilities capability = new DesiredCapabilities(); 

     capability.SetCapability("browserstack.user", "test"); 
     capability.SetCapability("browserstack.key", "test"); 
     capability.SetCapability("browserstack.local", "true"); 

     capability.SetCapability("browserName", _browsername); 
     capability.SetCapability("platform", _platform); 

     capability.SetCapability("device", _device); 

     driver = new RemoteWebDriver(
      new Uri("http://hub.browserstack.com/wd/hub/"), capability 
     ); 
     driver.Navigate().GoToUrl("http://sunet.se"); 



    } 

    [Test] 
    public void StartTest() 
    { 
     Thread.Sleep(5000); 
     driver.FindElement(By.XPath("/html/body/div[2]/div/div/div[1]/div[1]/div[2]/div/div[1]/div/div/div[2]/div/a")).Click(); 

     } 

    } 

    [TestFixtureTearDown] 
    public void Cleanup() 
    { 
     driver.Quit(); 
    } 
} 

回答

0

還沒有嘗試過,但有一個庫可以用來做這個叫NUnit Sequencer的庫。

https://www.ingenuityworking.com/knowledge/w/knowledgebase/1354.nunit-sequencer-tool-to-sequence-run-ordered-nunit-tests-and-fixtures-by-setting-attributes.aspx

好像config來設置它的一點點,但它可以讓你與屬性裝飾你的測試夾具,即指定要運行的順序測試的名稱。

實施例:

[TestFixture] 
[SequencedTestFixture("SubtractTest", "AddTest")] 
public class ArithmeticTests1 

這將運行一個測試稱爲SubtractTest第一,其次由稱爲AddTest測試。

請注意,單元測試意味着完全獨立運行,這就是爲什麼它們通常以不合邏輯的順序運行(儘管NUnit似乎按字母順序排列)。

其實,如果你不想用我所提到的庫,速戰速決將重命名你的測試夾具這樣0001_DoThisThingFirst,並0002_DoSomethingElse等 - 這樣NUnit的將按照字母順序運行它們。儘管如此,這可能會成爲維護頭痛。

+0

好吧,好像我會被重複的代碼卡住。但現在沒關係。謝謝你的回答。 – user3624378 2014-09-02 09:18:52

1

您的Multi類具有TestFixture的第一個簽名(3個字符串)的構造函數,但不包含第二個簽名(兩個字符串)的構造函數。根據你的NUnit版本,這可以解釋這個問題。或者添加正確的構造函數或更改第二個TestFixture簽名