在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的库。
好像config来设置它的一点点,但它可以让你与属性装饰你的测试夹具,即指定要运行的顺序测试的名称。
实施例:
[TestFixture]
[SequencedTestFixture("SubtractTest", "AddTest")]
public class ArithmeticTests1
这将运行一个测试称为SubtractTest
第一,其次由称为AddTest
测试。
请注意,单元测试意味着完全独立运行,这就是为什么它们通常以不合逻辑的顺序运行(尽管NUnit似乎按字母顺序排列)。
其实,如果你不想用我所提到的库,速战速决将重命名你的测试夹具这样0001_DoThisThingFirst
,并0002_DoSomethingElse
等 - 这样NUnit的将按照字母顺序运行它们。尽管如此,这可能会成为维护头痛。
答
您的Multi类具有TestFixture的第一个签名(3个字符串)的构造函数,但不包含第二个签名(两个字符串)的构造函数。根据你的NUnit版本,这可以解释这个问题。或者添加正确的构造函数或更改第二个TestFixture
签名
好吧,好像我会被重复的代码卡住。但现在没关系。谢谢你的回答。 – user3624378 2014-09-02 09:18:52