Существует довольно много накладных расходов на использование огурца для модульного тестирования. Вам не только нужно писать функции, но затем сопоставлять их с реализацией, используя отдельный бит кода.
Единичное тестирование должно быть очень быстрым для записи и очень быстро выполнять. Естественно, огурец фокусируется на опыте пользователей, в основном из-за языка, используемого при написании функции.
Только для обновления, функция будет содержать следующее:
Поскольку некоторые заинтересованные стороны системы
Я хотел бы осуществлять деятельность
Так что я могу получить некоторую выгоду из этого
Given a precondition
When I perform an action
Then something should happen
в первом пункте, который часто игнорируется, очень важно, так как она устанавливает продолжение ext для операции и объясняет , почему что-то происходит. Из-за использования естественного языка, эти вещи легко показать не-программистам, чтобы получить некоторую обратную связь.
Теперь, используя их для модульных тестов, в лучшем случае окажется неудобно. Прежде всего, ориентация конечных пользователей предполагает более интеграционный подход, поскольку функция ничего не говорит о mocks и UI/логическом разделении. То есть особенность как следующий раз кажется странным:
Given a that a database mock is configured with the following data
| ID | Username |
| 0 | igor |
When call FindAll on User Repository
Then I get the following user back
| ID | Username |
| 0 | igor |
Кроме того, как ваш SUT получает меньше (то есть класс), контекст работы не столь важно. Пользовательский репозиторий не заботится о контексте, например. его не интересует, является ли его потребитель обычным пользователем или VIP-пользователем. Простой компонент (который должен быть, после SRP), полностью детерминирован на основе его входных данных.
Итак, модульный тест должен подтвердить, что то, что вы написали, является правильным, и тест cucmber заключается в том, чтобы проверить, что то, что вы написали, удовлетворяет некоторой более высокой цели, поставив поведение системы в контексте.
JBehave 1.0 пришел первым - первоначально с отдельными механизмами для примеров классов/испытаний и сценарии. Это было время JUnit 3.8 - JUnit 4.4 сделал ненужным классный пример. Дэн Норт (основатель BDD и JBehave) разработал RBehave, затем команда RSpec объединила его, а затем Дэвид Челимски использовал обычный текст, и они разделили его на отдельную библиотеку - я думаю, Aslak Hellesoy привел это. Затем мы переписали JBehave 2.0 на основе Cucumber. Для исторического интереса: http://blog.davidchelimsky.net/2007/10/25/plain-text-stories-part-iii/ – Lunivore
О, и Огурец немного медленнее писать. См. Мой ответ по той причине, почему и проблемы, решаемые инфраструктурой. – Lunivore