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