Подтвердить что ты не робот

SpecFlow ошибочно использует NUnit

Я просто (сегодня) впервые попробовал SpecFlow. Я играю, создавая новую библиотеку классов в VS2010 Pro и добавляя файл определения FeatureFlow.

Дело в том, что интеграция, похоже, не работает должным образом, с множеством различных ошибок. Я выбрал MsTest в качестве тестового бегуна, потому что меня не беспокоит вызов NUnit (я бы хотел использовать NUnit в долгосрочной перспективе, но на данный момент я просто хочу получить некоторый код BDD). Однако сгенерированные файлы кода продолжают ссылаться на NUnit - что явно неправильно, так как я только что сказал SpecFlow для запуска с использованием MsTest. Я сделал все, что мог придумать, чтобы снова вызвать генерацию кода, включая создание нового проекта библиотеки классов с опцией MsTest, выбранной в меню "Сервис" > "Параметры" > "SpecFlow".

Если я оставлю поле тестового бегуна в поле "Авто" и щелкните правой кнопкой мыши файл функции, затем выберите "Запустить сценарии сценариев". Я получаю сообщение об ошибке "Не удалось найти подходящий тестовый бегун".

Если я вместо этого изменил поле тестового бегуна на MsTest, я получаю другое сообщение об ошибке при выполнении того же самого действия: "Object Reference не установлен в экземпляр объекта". Я не удивлен этим, так как он все еще пытается запустить тесты NUnit, хотя я явно просил MsTest, хотя, очевидно, это не должно быть noref и представить это пользователю.

Что я делаю неправильно? Документация не помогает, и, насколько я вижу, нет часто задаваемых вопросов.

edit # 1. Я установил, что фактическая настройка, которую я ищу, предоставляется с помощью App.Config с использованием поля <unitTestProvider name="MsTest" />. Я вижу, что произошло - поле в меню параметров Visual Studio, похоже, не изменяет проект, над которым вы сейчас работаете. Дело в том, что это похоже на то, что это поле ничего не делает. Теперь я убедил SpecFlow генерировать классы MsTest и работать с помощью бегуна MSTest.

Итак, теперь вопрос превращается в несколько другое: Что (если что-либо) делает инструмент > Опции > SpecFlow > Test Runner Tool?

4b9b3361

Ответ 1

С VS2010 правильным значением является MsTest.2010, а не MsTest, как задокументировано. Измените свой app.config(для тестовой сборки), и он будет работать нормально (по крайней мере, с SpecFlow 1.8)

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <configSections>
    <section name="specFlow" type="TechTalk.SpecFlow.Configuration.ConfigurationSectionHandler, TechTalk.SpecFlow" />
  </configSections>
  <specFlow>
      <unitTestProvider name="MsTest.2010" />
      <!-- For additional details on SpecFlow configuration options see https://github.com/techtalk/SpecFlow/wiki/Configuration -->
  </specFlow>
</configuration>

Ответ 2

В ответ на ваш последний вопрос. Что такое настройка "Инструменты" > "Параметры" > "SpecFlow" > "Инструмент тестового запуска" , этот параметр управляет тем, что на самом деле будет запускать тесты, а не тем, что будет генерировать тестовый код. Если он настроен на автоматическое, я верю, что он посмотрит файл App.config, где вы установили unitTestProvider, чтобы определить, какой лучший инструмент для запуска тестов. Альтернативный тестовый бегун, выполненный теми же парнями, что и SpecFlow, - SpecRun http://www.specrun.com/

Поэтому, когда вы идете запускать тесты, он будет использовать этот параметр. Как вы обнаружили, хотя генератор кода использует файл конфигурации для определения того, какой тип теста он должен генерировать (mstest/nunit..)

Если вы запустили установщик specfow (https://github.com/downloads/techtalk/SpecFlow/SpecFlowSetup_v1.8.1.msi), чтобы установить все компоненты Visual Studio Intergration при изменении файла App.config, как правило, позволяет обновить функции с помощью нового провайдера. Ручной способ сделать это - это щелкнуть правой кнопкой мыши на функции и выбрать "Запустить пользовательский инструмент"

Что касается документации, вы нашли wiki ww w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w https://github.com/techtalk/SpecFlow/wiki/Documentation

Ответ 3

Мы используем ReSharper в качестве лидера для приемочных тестов SpecFlow; он работал хорошо из коробки. Хотя ReSharper не является бесплатным, но он стоит каждого пенни...

Ответ 4

Мне не удалось заставить SpecFlow работать прямо из Visual Studio, я потратил некоторое время на это, но никуда не уходил. Хотя я нашел эти инструкции по настройке NUnit в Visual Studio 2010, и я использую этот ярлык для запуска тестов SpecFlow с хорошим эффектом.

В целом мы используем PowerShell для запуска большого количества тестов, и я смог включить бегун командной строки NUnit и генератор отчетов SpecFlow в один script, я могу легко запускать.