Cuke4Nuke или SpecFlow?
Вопрос
Я пытаюсь решить, следует ли мне использовать Cuke4Nuke или SpecFlow.Каковы плюсы / минусы каждого из них?Мнения о том, что лучше и почему.
Спасибо!
Решение
(Возможно, я пристрастен, потому что я связан со SpecFlow, но вот мои мысли ...)
Cuke4Nuke очень близок к Cucumber.Это сулит массу преимуществ:
- Совместимость
- Получение новых функций от Cucumber по мере развития Cucumber (по крайней мере, теоретически, но примером этого является языковая поддержка)
- Быть реальной частью Огуречного сообщества и Огуречной экосистемы
Однако это также сопряжено с некоторыми потенциальными недостатками:
- Ruby - это необходимость
- Поскольку задействовано больше инфраструктуры (Ruby, проводной протокол, интеграция с командной строкой ...), сложность всего решения возрастает, и возрастает вероятность сбоя чего-либо в цепочке
- Отладка возможна, но немного хлопоты
- Запуск сценариев в командной строке dos просто уродлив, и у меня все еще есть проблемы с некоторыми символами (немецкий Umlaute).В Решения from Cucumber в моем случае не сработал для cuke4nuke.
- Интеграция с вашей непрерывной сборкой - это то, что вы должны решить сами
SpecFlow - это отдельный проект от Cucumber.Он старается быть как можно ближе к Огурцу, но есть и будут пробелы.Планируется использовать тот же синтаксический анализатор, что и Cucumber, для улучшения совместимости на уровне языка.
SpecFlow пытается предложить следующие преимущества:
- Чистое .СЕТЕВОЕ решение (поэтому установка Ruby не требуется и Ruby не задействован во время выполнения)
- Существует базовая интеграция с VisualStudio (и есть планы по ее развитию)
- Сценарии в основном представляют собой UnitTests и могут быть запущены с вашей существующей инфраструктурой (NUnit.Runners, ReSharper, интеграция с VisualStudio MSTest ...)
- Сценарии и шаги легко отлаживаются из VisualStudio (просто установите точку останова)
- Интеграция в вашу непрерывную сборку должна быть простой, поскольку инфраструктура для запуска модульных тестов, скорее всего, уже существует
В качестве недостатков SpecFlow я вижу в настоящее время:
- Он не поддерживает столько языков, сколько Cucumber
- В настоящее время выполняется этап "генерации кода".Это прозрачно при использовании VisualStudio, и для этого есть командная строка без VisualStudio, но многим людям не нравится генерация кода.
- В настоящее время нет явного запуска командной строки для SpecFlow.Однако вы можете использовать свой модульный тестовый запуск командной строки.
- SpecFlow зависит от платформы модульного тестирования, и в настоящее время поддерживаются только NUnit и MSTest
- Отчетность в SpecFlow пока не очень сложна.Cucumber предлагает больше опций, однако я не знаю, все ли они доступны в cuke4nuke...
Другие советы
джбанди дает хорошее резюме.Я отвечаю на вопрос почти таким же образом (с противоположным отказом от предвзятости, конечно).
Целью Cuke4Nuke является полная совместимость Cucumber с .NET при одновременном дублировании как можно меньшего количества кода Cucumber.Таким образом, некоторые из компромиссов, которые вы выделили — напримерзависимость Ruby — присуща инструменту.Другие, такие как ошибки в поддержке языка и форматирования и ограниченная поддержка отладки, являются временными проблемами и исчезнут с будущими версиями.
Я столкнулся с несколькими проблемами, из-за которых Cuke4Nuke работает не совсем так, как Cucumber.Но поскольку я работаю в основном на английском языке, я не вижу проблем, связанных с языком, в моей обычной работе.Я бы приветствовал шаги по воспроизведению любой из этих проблем, чтобы я мог их исправить.(Пожалуйста, отправьте им сообщение список проблем Cuke4Nuke, не здесь.)
Еще одно сильно предвзятое мнение:Попробуй История Q :)
Тесты StoryQ на самом деле представляют собой код, поэтому вы получаете гораздо лучшую поддержку рефакторинга / IDE, и это встроено в ваш существующий модульный тестировщик, так что CI - это легкий процесс.
Вероятно, это вопрос предпочтений, предпочитаете ли вы использовать функции обычного текста или компилируемый код.Но для нас мы обнаружили, что было действительно приятно иметь возможность переименовывать методы повествования и обновлять все истории самостоятельно.
На самом деле предоставляется графический интерфейс, который преобразует сценарии с открытым текстом в код StoryQ для вас, если у вас уже есть инвестиции в сценарии с открытым текстом или если вы хотите предоставить клавиатуру своим деловым людям.У него даже есть простая форма intellisense!
Попробуйте, если вам нужна сверхлегкая точка входа в BDD :)
Еще один предвзятый ответ: StorEvil Хранить в потребляет все другие инструменты .NET BDD.
Преимущества:StorEvil имеет свой собственный запуск командной строки, имеет хорошие отчеты (с использованием механизма просмотра Spark) и имеет лучший механизм перевода и выполнения открытого текста-> C #.
Кроме того, в нем на 100% больше зла, чем в любом другом решении.
Недостатки:StorEvil не полностью поддерживает другие человеческие языки (кроме английского).Интеграция StorEvil с Visual Studio пока не так хороша, как с другими инструментами.StorEvil выпьет все пиво из холодильника, если вы не будете за ним присматривать.
Я понял от Ричарда, что он намерен прекратить работу с Cuke4Nuke и поддерживает перенос некоторых функций Cuk4Nuke в SpecFlow.Итак, теперь ясный ответ - SpecFlow.
Я начинал с Cuke4Nuke, но с тех пор перешел на SpecFlow (извини, Ричард ;-)
Основными причинами, побудившими меня совершить этот переход, были:
- SpecFlow имеет хорошую интеграцию с VS2010 для подсветки синтаксиса функций.Существует проект Cuke4VS, который предлагает аналогичное, но у него нет поддержки VS2010 (или, во всяком случае, не было, когда я смотрел в последний раз, что было довольно недавно)
- Я обнаружил, что отладка тестов в SpecFlow проще (не просите меня вдаваться в подробности, это просто так показалось...;-)
- Cuke4Nuke нужен был Ruby.Меня это устраивало, но большинство знакомых мне разработчиков C # пугаются любых продуктов, отличных от MS, в частности Ruby.
Есть некоторые проблемы со Specflow / вещами, которые мне больше нравятся в мире Cucumber / Cuke4Nuke:
- Документация Specflow довольно "облегченная" - вам нужно будет быть готовым усердно работать, чтобы собрать информацию из источников Cucumber и немного интуитивно понять, как они применимы к Specflow.Тем не менее, у меня и у немногих других есть планы по улучшению документации, чтобы она могла улучшиться в течение следующих нескольких месяцев.
- Я очень предпочитаю опыт запуска тестов Cucumber / Cuke4Nuke в командной строке с их выводом сценариев, закодированных цветом в соответствии со статусом (я знаю, что кто-то выше считает это отрицательным, поэтому я думаю, это зависит от того, являетесь ли вы специалистом по командной строке ...)
- Сообщество Cucumber стало больше, и, похоже, там стало больше активности, что (возможно) приводит к тому, что больше людей готовы вам помочь.
В целом, и то, и другое имеет потенциал для улучшения того, как мы пишем программное обеспечение.