Каковы различия между фреймворками BDD для Java?

Каковы плюсы и минусы каждой Основанная на Driven Development (BDD) для Java?

Я нашел некоторые из них здесь, например.

Имеет ли смысл использовать структуру BDD, если я уже использую насмешливую библиотеку (например, Mockito)?

4b9b3361

Я только что закончил сравнение трех фреймворков BDD для Java. Очевидно, что мои результаты имеют довольно короткий срок использования.

Concordion

  • Очень гибкий
  • Очень красивый вывод отчета
  • Хорошая структура плагина
  • Плохо документировано. Я должен был прочитать источник, чтобы понять его (к счастью, его чрезвычайно хорошее качество).
  • Светильники, похоже, оказались тесно связанными с html.

EasyB

  • Очень мелкая кривая обучения (даже для разработчиков Groovy разработчиков)
  • Чрезвычайно мощная интеграция с DBUnit
  • По-видимому, нет поддержки параметров (приводит к очень расплывчатым историям или дублированию текста и кода (редактирование: на самом деле есть, но документация для него была очень хорошо скрыта).
  • История и код очень тесно связаны (тот же файл)
  • Очень простой вывод отчета
  • Не удалось заставить плагин IntelliJ работать
  • Неактивное сообщество (плагин Maven, похоже, был разбит на три месяца - не много примеров кода для рисования)

JBehave

  • Чрезвычайно мощный и гибкий (например, сокращение котельной плиты посредством составления рассказов в качестве предварительных условий)
  • Обширная (если фрагментированная) документация и примеры
  • Обширная (если подавляющая) поддержка различных фреймворков и сред
  • Отличное разделение файлов истории из кода
  • Похоже, у вас довольно активное сообщество и много примеров и обсуждение его в Интернете.
  • Довольно крутая кривая обучения (мне приходилось в 3-4 раза дольше, чем Concordion/EasyB)

У меня не было возможности попробовать Cuke4Duke JDave, как мне бы хотелось, но, вероятно, в данный момент выйдет за JBehave.

97
ответ дан 02 мая '11 в 2:43
источник

"за и против" могут быть разные вещи для разных людей. Обычно я смотрю

  • активность разработки. являются новыми релизами, вероятно, или является последним релизом 2-х лет.
  • зрелость, например. сколько времени было, есть ли учебники и, возможно, даже книги. (Я не читаю эти книги, это просто признак усыновления.)
  • поддержка инструмента, например. есть плагин Eclipse, поддержка Ant и т.д.
  • размер зависимостей, мне не нравятся фреймворки, которые поставляются со всем своим. например Я хочу сам выбрать свою фальшивую структуру.
  • вид лицензии, это важно для меня из-за юридических условий в компании, в которой я работаю.
  • совместимость со связанными инструментами. использует ли он язык Герхина или нет.

И из некоторых фреймворков я взглянул на

  • Instinct bad: последняя активность Мар 2010, хорошо: лицензия ASF
  • JDave плохой: идет с совпадениями и mocks, good: last activity Jan 2011, ASF license
  • easyb bad: последняя активность Oct 2010, не уверен: он использует Groovy. Это может быть хорошо, но это будет проблемой для принятия в моем случае.
  • beanspec плохо: только одна версия в 2007 году, это мертво
  • bdoc bad: последняя активность Jan 2010, не уверен: похоже, что происходит другим путем, создавая отчет из кода.
  • spock плохо: может быть, немного экстремально, это полная тестовая среда, а не только BDD, хорошо: очень активно, очень круто.
  • jbehave, "мама" всех BDD в Java, bad: very powerful = complex, несовместимая лицензия (для меня), поставляется с почти каждой тестовой библиотекой и многое другое: на основе RSpec и, следовательно, совместимыми, плагинами eclipse, интеграцией maven, очень активным сообществом.

Что касается насмешек: вам определенно нужна и насмешливая структура. Рамки BDD просто помогают вам писать спецификации, но для некоторых тестов понадобятся макеты или заглушки, особенно. когда вы создаете сверху вниз (от обзора к деталям).

34
ответ дан 20 янв. '12 в 0:55
источник

Какая лучшая структура BDD для использования с Java? Зачем? Каковы преимущества и недостатки каждой структуры?

Вот интересная ссылка о Конкордион против огурца и тест на прием на основе Java

Я нашел пару из них здесь, но я не уверен, какой из них выбрать.

Действительно, посмотрите на упомянутый выше.

Имеет ли смысл использовать BDD-фреймворк, если я уже использую насмешливую библиотеку (например, Mockito)?

Короткий ответ: да, определенно. Фактически, приемочные испытания с использованием BDD-структуры и модульного тестирования изолированно с использованием макетных объектов настолько различны, что я действительно не задаю вопрос. Приемочное тестирование - тестирование черного ящика, тесты используются для проверки функционирования бизнес-функции и идеально написаны бизнес-аналитиком. Единичные тесты в изоляции с использованием mocks - это тестирование белого ящика, тесты используются для проверки работоспособности устройства и написания его разработчиками. Оба полезны, но они имеют совершенно разные цели. Другими словами, использование Mockito не заменяет структуру BDD вообще, и инверсия также верна.

18
ответ дан 10 февр. '10 в 10:37
источник

Я изначально сделал свой BDD с простым jUnit, но в последнее время я смотрел JDave, потому что он почти 1:1 к тому, что я делал с jUnit. Он также работает поверх jUnit, поэтому он уже работает на Eclipse, а также легко настраивается для работы с системами непрерывной интеграции, такими как Hudson. Невозможно сравнить это с другими, но мой опыт работы с JDave был до сих пор хорош.

О, и это никогда не глупая идея использовать насмешки! Они специально не привязаны к TDD/BDD, их цель - облегчить бремя тестирования в целом.

6
ответ дан 02 июля '09 в 1:45
источник

Ничего себе, я вижу, что тема горячая, много хороших ответов...

Ирония в сторону, я недавно обнаружил BDD и нашел концепцию интересной. Эй, это заставляет писать и тесты... и спецификации! Как ни удивительно, последнее может отсутствовать и в некоторых проектах... Или просто не хватает точности, которую BDD заставляет вводить.

Разработка, управляемая поведением в статье обобщает концепцию и ссылки на некоторые хорошие статьи ( как тот, написанный Эндрю Гловером). Более того, к теме этого потока, он дает довольно полный (я полагаю) список BDD-фреймворков, большое их количество для Java.
Это не решает проблему выбора рамки, но, по крайней мере, это облегчит поиск...

Поскольку BDD в значительной степени зависит от читаемости тестового кода, я полагаю, что хорошим критерием выбора является просмотр быстрых туров/учебников и просмотр того, какой из них кажется более подходящим для вашего стиля. Другими критериями могут быть те инструменты, которые вы знакомы (unit test, mocking), использование с IDE и т.д.

5
ответ дан 06 янв. '10 в 13:13
источник

Моя команда успешно использовала JBehave - мы перешли к ней после использования EasyB и обнаружили, что файлы сценариев с открытым текстом легче справляться.

3
ответ дан 02 марта '11 в 18:58
источник

Моя команда уже давно использует JBehave. Он использует текстовые файлы для хранения спецификаций. Каждый шаг (Given, When, Then) затем выполняется определенным методом, который может извлекать параметры с шага. Сценарии могут быть отступом и хорошо отформатированы, что очень помогает, если клиенты хотят их проверить.

Есть и некоторые проблемы. Мы перешли на Java 6. Иногда некоторые сценарии игнорируются во время выполнения. Это может вызвать массу проблем, когда выясняется, где ошибка.

3
ответ дан 10 февр. '10 в 10:17
источник

Я попробовал Cucumber-JVM (ранее разработанный как Cuke4Duke). Он использует Gherkin DSL для спецификации, хранящийся как обычный текст.

Cucumber-JVM Example in Eclipse 4.2

Его можно запустить как тест JUnit. Таким образом, единственная проблема, которую следует начать использовать, заключается в том, чтобы заставить деловых людей или Product Manager читать/писать .features в Источниках.

Результаты

2
ответ дан 17 дек. '12 в 13:17
источник