在nunit中按顺序执行测试

本文关键字:执行 测试 顺序 nunit | 更新日期: 2023-09-27 18:20:26

我想连续执行一些nunit/C#测试。我正在browserstack上测试网络驱动程序。我不想做的是用几个平台和几个设备按顺序执行测试。我尝试了[TestFixture("安卓","安卓系统","LG Nexus 4")][TestFixture("android","Samsung 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();
    }
}

在nunit中按顺序执行测试

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

我自己还没有尝试过,但有一个库可以用来实现这一点,叫做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就会按字母顺序运行它们。不过,这可能会成为一个令人头疼的维护问题。