在nunit中按顺序执行测试

时间:2014-09-01 21:13:56

标签: c# selenium-webdriver nunit

我想在sequnce中执行一些nunit / C#测试。我在browserstack上使用webdriver进行测试。而我要做的是按顺序执行我的测试,使用多个平台和几个设备。我试过[TestFixture(" android"," Android"," LG Nexus 4")]     [TestFixture(" android","三星Galaxy S III")]和我班级的构造函数。但它没有用。你能帮帮我吗?

[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();
    }
}

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:0)

Haven自己尝试过但是你可以使用一个名为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

设置它似乎有点配置,但它允许您使用属性来装饰测试装置,这些属性按照您要运行它们的顺序指定测试的名称。

示例:

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

首先运行名为SubtractTest的测试,然后进行名为AddTest的测试。

请注意,单元测试应完全相互独立地运行,这就是为什么它们通常以不合逻辑的顺序运行(尽管NUnit似乎按字母顺序排列)。

实际上,如果你不想使用我提到的库,快速解决方法就是重命名你的测试装置,如0001_DoThisThingFirst0002_DoSomethingElse等 - 这样NUnit会按字母顺序运行它们。这可能会成为一个维护问题。