Как запустить конкретный тест NUnit из кода с помощью NUnit 3 (C #)

Я пытаюсь второй раз запустить тесты программно, которые существуют в том же проекте.

Потому что, если SetUp тестов не удался, тесты и SetUp будут запущены снова.

Я использую Selenium Webdriver для запуска тестов, и многие из них имеют SetUp предварительные действия. Например: предварительным действием является покупка билета, а затем запускается набор тестов, чтобы проверить, все ли в порядке.

Часто мое предварительное действие SetUp терпит неудачу (возникает ошибка), и тогда тест не запускается. Я хотел бы дать им второе изменение, то есть запустить их снова.

Отличное решение, которое может сработать для меня, - это этот вопрос SO, но для него требуется NUnit 3.

В NUnit 3 нет пакета NUnit.Core, поэтому решение показывает много ошибок. Я также не уверен, что мне нужно его использовать, если мои методы тестирования помещены в один и тот же проект (так что, возможно, мне не нужно загружать сборку).

Есть идеи, как запустить тестовый метод из кода, если этот метод помещен в тот же проект?


person Denis Koreyba    schedule 23.02.2016    source источник
comment
Вы пробовали использовать атрибут Retry? (Обратите особое внимание на третий пункт - вам нужно сделать то, что в настоящее время вызывает исключение AssertionException)   -  person Chris    schedule 23.02.2016


Ответы (1)


Отсутствующие методы и сборки являются частью внутренней реализации NUnit 2.6.4 и никогда не предназначались для публичного использования. Решение, на которое вы указываете, является «отличным» только тогда, когда оно работает, но поскольку оно использует внутренние классы и методы, нет никаких гарантий.

Что касается NUnit 3.0, вам повезло, потому что теперь существует общедоступный API для использования при выполнении тестов. Используя общедоступный / опубликованный API, вы получаете гарантию, что мы продолжим его работу в будущем.

Документация по API теперь находится по адресу Test-Engine-API. Вот простой пример его использования ...

ITestEngine engine = TestEngineActivator.CreateInstance();
TestPackage package = new TestPackage("path/to/assembly");
ITestRunner runner = engine.GetRunner(package);
XmlNode result = runner.Run(this, TestFilter.Empty);

Вы должны ссылаться на сборку nunit.engine.api (а не на nunit.engine), чтобы использовать это. Предполагается, что ваш класс, выполняющий эти вызовы, реализует ITestEventListener.

person Charlie    schedule 23.02.2016