Каковы плюсы и минусы каждой структуры разработки на основе поведения (BDD) для Java?
Вот , например, я нашел некоторые из них .
Имеет ли смысл использовать фреймворк BDD, если я уже использую имитирующую библиотеку (например, Mockito )?
Каковы плюсы и минусы каждой структуры разработки на основе поведения (BDD) для Java?
Вот , например, я нашел некоторые из них .
Имеет ли смысл использовать фреймворк BDD, если я уже использую имитирующую библиотеку (например, Mockito )?
Ответы:
Я только что закончил сравнивать три фреймворка BDD для Java. Очевидно, что у моих выводов довольно короткий срок годности.
У меня не было возможности опробовать Cuke4Duke из JDave, как мне бы хотелось, но, вероятно, сейчас я буду настаивать на JBehave.
«за» и «против» у разных людей могут быть разные вещи. Я обычно смотрю на
И из некоторых фреймворков я взглянул на
Что касается mocks: вам определенно понадобится mock framework. Фреймворки BDD просто помогают вам в написании спецификаций, но для некоторых тестов потребуются фиктивные или заглушки, особенно. при проектировании сверху вниз (от обзора к деталям).
Какую среду BDD лучше всего использовать с Java? Зачем? Каковы плюсы и минусы каждого фреймворка?
Вот интересная ссылка о Concordion vs. Cucumber и приемочном тестировании на основе Java.
Я нашел здесь пару из них, но не уверен, что выбрать.
Действительно, посмотрите на упомянутый выше.
Имеет ли смысл использовать фреймворк BDD, если я уже использую имитирующую библиотеку (например, Mockito)?
Краткий ответ: да, безусловно. На самом деле приемочное тестирование с использованием фреймворка BDD и изолированное модульное тестирование с использованием фиктивных объектов настолько различаются, что я не понимаю вопроса. Приемочное тестирование - это тестирование методом черного ящика, тесты используются для проверки того, что бизнес-функция работает, и в идеале они написаны бизнес-аналитиком. Модульные тесты изолированно с использованием макетов - это тестирование методом белого ящика, тесты используются для проверки того, что модуль работает, и написаны разработчиками. Оба они полезны, но имеют совершенно разные цели. Другими словами, использование Mockito вообще не заменяет структуру BDD, и обратное тоже верно.
Первоначально я делал свой BDD с помощью простого jUnit, но в последнее время я смотрел на JDave, потому что он почти 1: 1 по сравнению с тем, что я делал с jUnit. Он также работает поверх jUnit, поэтому он уже работает в Eclipse, а также его легко настроить для работы в системах непрерывной интеграции, таких как Hudson. Не могу сравнить его с другими, но мой опыт работы с JDave пока хорош.
О, и использовать моки никогда не бывает глупо! Они не привязаны конкретно к TDD / BDD, их цель - облегчить бремя тестирования в целом.
Вау, тема горячая, много хороших ответов ...
Помимо иронии, я недавно открыл для себя BDD и нашел эту концепцию интересной. Эй, это заставляет писать и тесты ... и спецификации! Как это ни удивительно, последнее также может отсутствовать в некоторых проектах ... Или ему просто не хватает точности, которую заставляет внедрять BDD.
В статье Behavior Driven Development кратко изложена концепция и даны ссылки на несколько хороших статей (например, написанную Эндрю Гловером). Более того, что касается темы этой ветки, он дает довольно исчерпывающий (я полагаю) список фреймворков BDD, многие из которых предназначены для Java.
Проблему выбора фреймворка это не решит, но хотя бы облегчит поиск ...
Поскольку BDD в значительной степени полагается на удобочитаемость тестового кода, я полагаю, что хорошим критерием выбора является просмотр кратких обзоров / учебников и определение того, какой из них больше подходит вашему стилю. Другими критериями могут быть то, что фреймворк использует инструменты, с которыми вы знакомы (модульное тестирование, макетирование), использование с IDE и т. Д.
Я попробовал Cucumber-JVM (ранее разработанный как Cuke4Duke). Он использует Gherkin DSL для спецификации, хранящейся в виде простого текста.
Его можно запустить как тест JUnit. Таким образом, единственная проблема для начала использования - это заставить деловых людей или менеджера по продукту читать / записывать .features в Sources.
Полученные результаты
Моя команда уже некоторое время использует JBehave . Он использует простые текстовые файлы для хранения спецификаций. Каждый шаг (Given, When, Then) затем выполняется определенным методом, который может извлекать параметры из шага. Сценарии могут быть с отступом и хорошо отформатированы, что очень помогает, если клиенты хотят их проверить.
Есть и проблемы. Мы перешли на Java 6. Иногда некоторые шаги сценария игнорируются во время выполнения. Это может вызвать большие проблемы с выяснением того, где ошибка.