Які плюси та мінуси кожної структури розвитку, спричиненої поведінкою (BDD) для Java?
Я знайшов деякі з них тут , наприклад.
Чи є сенс використовувати рамку BDD, якщо я вже використовую глузуючу бібліотеку (наприклад, Mockito )?
Які плюси та мінуси кожної структури розвитку, спричиненої поведінкою (BDD) для Java?
Я знайшов деякі з них тут , наприклад.
Чи є сенс використовувати рамку BDD, якщо я вже використовую глузуючу бібліотеку (наприклад, Mockito )?
Відповіді:
Я щойно закінчив зіставляти три рамки BDD для Java. Очевидно, що мої висновки мають досить коротку дату використання.
У мене не було можливості спробувати Cuke4Duke з JDave, як мені б хотілося, але, мабуть, на цей час я буду наполягати на JBehave.
"плюси і мінуси" можуть бути різними для різних людей. Я зазвичай дивлюся на це
І з якихось рамок я мав на це поглянути
Щодо макетів: Вам також неодмінно потрібен глузливий каркас. Структури BDD просто допомагають вам писати характеристики, але для деяких тестів знадобляться макети або заглушки, особливо. коли ви проектуєте зверху вниз (від огляду до деталей).
Яка найкраща рамка BDD для використання з Java? Чому? Які плюси і мінуси кожної структури?
Ось цікавий посилання про Concordion vs. Cucumber та Java Acceptance Testing
Тут я знайшов пару з них, але я не впевнений, яку вибрати.
Дійсно, погляньте на згадане вище.
Чи є сенс використовувати рамку BDD, якщо я вже використовую глузуючу бібліотеку (наприклад, Mockito)?
Коротка відповідь: так, безумовно. Насправді, прийняття тестування за допомогою BDD фрейму та одиничне тестування в ізоляції з використанням макетних об'єктів настільки різні, що я насправді не ставлю питання. Тестування приймання - це тестування чорної скриньки, тести використовуються для перевірки того, що функція бізнесу працює і ідеально написана бізнес-аналітиком. Тести підрозділу в ізоляції з використанням макетів - це тестування білого поля, тести використовуються для перевірки того, чи працює підрозділ та написано розробниками. Обидва корисні, але вони мають абсолютно різні цілі. Іншими словами, використання Mockito взагалі не замінює рамки BDD, а також зворотне.
Спочатку я робив свій BDD з простого jUnit, але останнім часом я дивився на JDave, оскільки це майже 1: 1 на те, що я робив з jUnit. Він також працює поверх jUnit, тому він вже працює на Eclipse, а також його легко налаштувати для роботи на системах безперервної інтеграції, таких як Хадсон. Не можу насправді порівняти його з іншими, але мій досвід роботи з JDave був хорошим поки що.
О, і ніколи не дурна думка використовувати макети! Вони спеціально не пов'язані з TDD / BDD, їх мета - в цілому полегшити тягар тестування.
Нічого собі, я бачу тему гарячу, багато хороших відповідей ...
Іронія вбік, я нещодавно виявив BDD і вважав цю концепцію цікавою. Гей, це змушує писати і тести ... і технічні характеристики! Як не дивно, як може здатися, останнього також може бракувати в деяких проектах ... Або просто бракує точності, яку BDD змушує запровадити.
Стаття про поведінку, керовану розвитком, узагальнює концепцію та посилання на деякі добрі статті (наприклад, до тієї, яку написав Ендрю Гловер). Більше того, до теми цього потоку він дає досить вичерпний (я думаю) перелік фреймворків BDD, велика кількість з них призначена для Java.
Це не вирішує проблему вибору рамки, але принаймні полегшить пошук ...
Оскільки BDD значною мірою покладається на читабельність тестового коду, я вважаю, що хорошим критерієм вибору є перегляд швидких екскурсій / навчальних посібників і побачити, який з них здається більш відповідним вашому стилю. Іншими критеріями може бути той факт, що ви знайомі з інструментами для використання в рамках (тестування одиниць, глузування), використання з IDE тощо.
я намагався Cucumber-JVM (раніше розроблявся як Cuke4Duke). Він використовує DSL Gherkin для специфікації, зберігається як звичайний текст.
Його можна запустити як тест JUnit. Тож єдина проблема почати його використовувати - це змусити ділових людей чи менеджера продуктів читати / писати .features у джерелах.
Результати
Моя команда використовує JBehave деякий час . Для зберігання специфікацій використовується звичайний текстовий файл. Кожен крок (Дано, Коли, Тоді) виконується певним методом, який може витягувати параметри з кроку. Сценарії можуть бути відступними та добре відформатованими, що дуже допомагає, якщо клієнти хочуть їх перевірити.
Є і деякі проблеми. Ми перейшли на Java 6. Іноді деякі кроки сценарію ігноруються під час виконання. Це може спричинити чимало клопоту з'ясувати, де помилка.