在nunit中按顺序执行测试

问题描述:

我想执行一些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(); 
    } 
} 

还没有尝试过,但有一个库可以用来做这个叫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

您的Multi类具有TestFixture的第一个签名(3个字符串)的构造函数,但不包含第二个签名(两个字符串)的构造函数。根据你的NUnit版本,这可以解释这个问题。或者添加正确的构造函数或更改第二个TestFixture签名