it-roy-ru.com

Каковы различия между JBehave и огурцом?

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

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

59
Manoj

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

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

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

Сходства:

  • JUnit поддержка из коробки
  • Чистая Ява
  • Быстро
  • Легко использовать

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

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

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

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

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

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

98
cgleissner

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

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

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

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

3
Thilina Ashen Gamage

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

3
Karthikeyan

Как гласит принятый ответ, 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 все еще достигает уровня зрелости с прохладными новыми функциями изо дня в день.

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

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

Обратите внимание на особенности:

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

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

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

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

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

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

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

Особенности JBehave:

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

0
Chris Halcrow