我想在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();
}
}
答案 0 :(得分:1)
你的Multi类有一个构造函数用于TestFixture的第一个签名(3个字符串),但不包含第二个签名(两个字符串)。根据您的NUnit版本,这可以解释问题。添加正确的构造函数或更改第二个TestFixture
签名
答案 1 :(得分:0)
Haven自己尝试过但是你可以使用一个名为NUnit Sequencer的库。
设置它似乎有点配置,但它允许您使用属性来装饰测试装置,这些属性按照您要运行它们的顺序指定测试的名称。
示例:
[TestFixture]
[SequencedTestFixture("SubtractTest", "AddTest")]
public class ArithmeticTests1
首先运行名为SubtractTest
的测试,然后进行名为AddTest
的测试。
请注意,单元测试应完全相互独立地运行,这就是为什么它们通常以不合逻辑的顺序运行(尽管NUnit似乎按字母顺序排列)。
实际上,如果你不想使用我提到的库,快速解决方法就是重命名你的测试装置,如0001_DoThisThingFirst
和0002_DoSomethingElse
等 - 这样NUnit会按字母顺序运行它们。这可能会成为一个维护问题。