Я хочу выполнить некоторые nunit/С# тесты в sequnce. Я тестирую webdriver в браузере. и что я не буду делать, это выполнить мой тест последовательно с несколькими платформами и несколькими устройствами. Я попытался с помощью [TestFixture ("Android", "Android", "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();
}
}
У вашего класса Multi есть конструктор для первой сигнатуры (3 строки) TestFixture, но не для второй подписи (две строки). В зависимости от вашей версии NUnit это может объяснить проблему. Либо добавьте правильный конструктор, либо измените вторую подпись TestFixture
Не пробовал это сам, но есть библиотека, которую вы могли бы использовать, чтобы сделать это под названием NUnit Sequencer.
Кажется, что немного конфигурации, чтобы настроить его, но он позволяет вам украшать ваши тестовые приборы атрибутами, которые определяют имена теста в том порядке, в котором вы хотите их запустить.
Пример:
[TestFixture]
[SequencedTestFixture("SubtractTest", "AddTest")]
public class ArithmeticTests1
Сначала будет выполняться тест под названием SubtractTest
, а затем тест под названием AddTest
.
Обратите внимание, что модульные тесты предназначены для запуска полностью независимо друг от друга, и поэтому они обычно выполняются в нелогичном порядке (хотя NUnit, похоже, находится в алфавитном порядке).
На самом деле, если вы не хотели использовать библиотеку, о которой я упоминал, быстрым решением было бы переименовать ваши тестовые приборы, такие как 0001_DoThisThingFirst
, и 0002_DoSomethingElse
и т.д. - таким образом NUnit будет запускать их в алфавитном порядке. Однако это может стать головной болью.