Выполнение тестов с различными параметрами TestFixture с помощью консоли NUnit3.

Кто-нибудь знает, можно ли выполнять тесты с разными параметрами TestFixture с помощью консоли nunit3? У меня есть следующий код:

  [TestFixture(Browser.Firefox)] 
  [TestFixture(Browser.Chrome)]
  public class Tests : BaseTestCase

и я хочу выполнить тесты только с настройкой Browser.Chrome. Можно ли запускать все тесты из определенной dll, у которой параметр TestFixture = Browser.Chrome?

Заранее благодарим за предоставленную информацию!


person Iva Kostova    schedule 04.07.2016    source источник


Ответы (2)


Спасибо вам за помощь! Я пробовал так, как вы предлагаете, но безуспешно. Когда я устанавливаю свойства тестового класса, я не могу получить время выполнения значения «Браузер». «Браузер» содержит все свойства, установленные для теста, а не тот, с которым тест выполняется в данный момент.

В качестве обходного пути моей проблемы я нашел следующее решение: у меня есть метод, который используется для поиска всех тестовых классов из сборки с TestFixture «Browser», установленным на «Chrome». После того, как имена классов найдены, они добавляются в текстовый файл, и, наконец, файл выглядит так:

TestClass1(Chrome)
TestClass2(Chrome)
TestClass3(Chrome)

Когда у меня есть такой файл, я могу запустить тесты с помощью следующей команды: nunit3-console "TestsDllPath" --testlist="TextFilePath"

Большим недостатком этого подхода является то, что метод создания файлов списка тестов должен запускаться каждый раз при добавлении тестового класса.

person Iva Kostova    schedule 04.07.2016
comment
Проблема в том, что атрибуты применяются к типу, а не к отдельным экземплярам, ​​созданным NUnit. .NET ничего не знает о том, как NUnit будет использовать эти атрибуты, он просто делает то, что делает. - person Charlie; 04.07.2016
comment
Никогда не знал, что - извинения за указание в неправильном направлении! - person Chris; 04.07.2016

Две части вашего вопроса:

  1. Можно создать прибор точно так, как вы описываете. Ты пробовал? Значение перечисления будет передано конструктору фикстуры, который, конечно же, должен быть написан так, чтобы принимать такое перечисление. Я не пробовал это, поэтому может потребоваться настроить его как int, но это легко изменить.

  2. Выбрать только одну фикстуру для запуска должно быть достаточно просто, если вы сначала выясните имя, которое NUnit дает тесту, представленному фикстурой. Вероятно, это будет что-то вроде «Тесты (Chrome), но вы должны проверить либо с помощью --explore, либо запустить тесты и просмотреть вывод XML. Как только вы узнаете имя, просто запустите его, используя параметр --where. тесты с такой опцией были бы вопросом использования --where с регулярным выражением, которое выбирает эти тесты.

    Если --where "test=~/(Chrome)/" недостаточно хороший селектор, я бы заменил перечисление некоторыми константными строками, которые вы определяете сами, например "BrowserIsChrome". Вы можете преобразовать их в перечисление в своем конструкторе. Просто сделайте строки достаточно уникальными, чтобы их можно было проверить с помощью параметра --where.

person Charlie    schedule 04.07.2016