Каковы различия между JBehave и огурцом? - PullRequest
60 голосов
/ 31 октября 2011

Я где-то читал, что JBehave фактически является Java-эквивалентом Cucumber, тогда как Cucumber основан на Ruby.

Может кто-нибудь описать различия между ними, предоставить ссылки, которые делают?

Ответы [ 4 ]

101 голосов
/ 29 ноября 2011

JBehave и Cucumber - это совершенно разные фреймворки, хотя и предназначенные для одной и той же цели: приемочные испытания.Они основаны на рассказах (JBehave) или особенностях (огурец).Особенность - это набор историй, выраженных с точки зрения конкретного участника проекта.В своих тестах вы обращаетесь к историям, как правило, с помощью сопоставления регулярных выражений.

JBehave - это чистый Java-фреймворк, тогда как Cucumber основан на Ruby.Оба очень зрелые рамки.Вы можете использовать Cucumber из Java с помощью плагина Cuke4Duke Maven от Maven , но все еще существует несоответствие языка, поскольку он продолжает использовать Ruby для внутреннего использования, и вам потребуется установить этот язык и его инфраструктуру (так называемый 'gems ') на машине, которая запускает ваши тесты.Это может быть хрупким, а несовпадение языков усложняет как отладку, так и снижает производительность ваших тестов.В настоящее время существует чистая Java-реализация Cucumber, которая называется Cucumber-JVM .По состоянию на декабрь 2011 года он еще не выпущен, но отлично подходит для использования (редактирование: версия 1.0.0 была выпущена 27 марта 2012 года) .Этот новый фреймворк очень похож на JBehave, поскольку оба имеют встроенную поддержку JUnit.

Ниже приводится сравнение Cucumber-JVM и JBehave.

Сходства:

  • Поддержка JUnit из коробки
  • Чистая Java
  • Быстрая
  • Простота в использовании

Плюсы / минусы JBehave:

  • Pro Очень хорошая документация
  • Pro Довольно хорошее HTML-форматирование результатов теста
  • Con Поддерживает только истории, не функции

Плюсы / минусы Cucumber-JVM:

  • Pro Поддерживает функции
  • Con Не поддерживает параллельные тесты JUnit.Однако будет работать с параллельными сборками Maven 3.
  • Con Отсутствует документация
  • Con Нет хорошего HTML-форматирования результатов теста, кромеСобственное форматирование JUnit (редактирование: Cucumber-JVM теперь поддерживает вывод HTML)

Если вы работаете с Java-проектом, я бы порекомендовал либо JBehave (если выищите отличную документацию) или Cucumber-JVM (если для вас важна поддержка функций или историй).

Я попробовал обе платформы и выбрал Cucumber-JVM.

3 голосов
/ 26 июля 2017

Cucumber JVM является реализацией Java популярного инструмента Cucumber BDD, как упоминалось в ответах выше.

JBehave имеет много дополнительных конфигураций для точной настройки инструмента BDD в соответствии с вашими предпочтениями. Но с этими конфигурациями также возникает большая сложность. В конце дня мы идем Agile, и нам нравится быть Lean в нашей работе. Вопрос, который вы должны задать себе, заключается в том, добавляют ли эти сложные конфигурации какое-либо существенное значение вашему рабочему процессу. Я видел людей, делающих BDD даже без такого мощного инструмента, как Cucumber или JBehave. Некоторые также создают свои собственные инструменты. По моим наблюдениям, если вам нужен инструмент BDD, у Cucumber есть практически все, что вам нужно.

Для получения дополнительной информации вы можете прочитать эту статью в блоге, написанную мной: JBehave Vs Cucumber JVM: сравнение и обмен опытом

P. S. Я чувствую, что Stackoverflow - не лучшее сообщество, чтобы задавать субъективные вопросы об инструментах. В любом случае надеюсь, что это обсуждение будет кому-то полезно.

3 голосов
/ 08 августа 2013

Нет, на самом деле Java-эквивалент огурца равен Cucumber-JVM . Вам также может понадобиться проверить эту ссылку , чтобы понять разницу между этими двумя известными средами BDD.

1 голос
/ 05 февраля 2019

Как указано в принятом ответе, JBehave - это чистая Java, а Cucumber - это обобщенная среда BDD, которая реализована на разных языках и может быть сделана доступной в качестве инфраструктуры тестирования вразличные контексты - см. здесь https://docs.cucumber.io/installation/.

Если вы хотите реализовать BDD-фреймворк для Java-проекта, то ваше сравнение должно быть в основном между JBehave и Cucumber-JVM (чистая Java-реализация Cucumber),

В этом последнем обновленном справочнике от июля 2017 года сравниваются JBehave и Cucumber-JVM, и указывается, что cucumber-jvm в настоящее время обычно , предпочтительнее JBehave (в терминах степени токаактивность и использование).Это включает в себя поддержание более активной поддержки Cucumber-JVM:

https://medium.com/agile-vision/jbehave-vs-cucumber-jvm-comparison-and-experience-sharing-439dfdf5922d

В статье также говорится, что:

Согласно моему пониманию, JBehaveв фазе зрелости своего жизненного цикла, в то время как огурец все еще достигает уровня зрелости с прохладными новыми функциями изо дня в день.

В статье Cucumber-jvm более высоко оценивается в следующих аспектах

  • Документация и сообщество
  • Функции (см. Мою заметку ниже)
  • Отчеты
  • Популярность, качество кода и текущая активность на GitHub
  • Упражнение в StackOverflow

Примечание к функциям:

В данной статье функции Cucumber-JVM оцениваются более высоко для сравниваемого набора функций, однако вес, который вы можете датьопределенные функции будут зависеть от ваших конкретных потребностей:

  • Для артикула огуречная JVM выше для следующих предметов:

    • Плагин IDE (подсветка синтаксиса)
    • Гибкость форматирования
    • Поддержка лямбда-выражений
  • В статье скорость JBehave выше для следующих:

    • Поддержка внешних данных
    • Составные шаги (это имеет низкий уровень поддержки в Cucumber-JVM со следующими пояснительными примечаниями):
    • Составные шаги не входят в стандарт BDD / Gherkin Standard.

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

  • Статьи оценивают jbehave и Cucumber-JVM одинаковымидля следующего:

    • Фоны и крючки
    • Привязка к коду (аннотации)

JВозможности:

https://jbehave.org/reference/stable/features.html

...