Подтвердить что ты не робот

PHPUnit & Behat; дополняющих или альтернативных?

Я смотрю вокруг SO и Google, но я не мог получить окончательного ответа.

PHPUnit - это среда для unittesting, например JUnit. Я использую его, также в сочетании с расширением Selenium для функционального тестирования. Когда я просматриваю, я вижу, что Behat/Mink продолжают упоминаться. Но я не совсем понимаю, как Behat подходит здесь.

С Behat вы пишете сценарии в удобочитаемом формате. Можно ли затем перевести это в классы скелета для нового проекта? Но он также предоставляет классы скелета для unittesting? Вы пишете unittests с помощью Behat, или используете для этого PHPUnit/SimpleTest?

Но тогда Behat/Mink заменяет PHPUnit_Selenium-расширение для функционального тестирования?

Используете ли вы Behat только для новых проектов или можете ли он также адаптироваться к существующим проектам?

4b9b3361

Ответ 1

Да, я бы подумал, что Behat является альтернативой phpUnit, как для общего тестирования кода, так и для функционального тестирования с использованием автоматизации браузера.

Для общего тестирования phpUnit является более устоявшимся продуктом, а Behat сосредоточен на тестах, написанных с использованием методологии "BDD" (Behavior Driven Design). phpUnit также имеет функции BDD, но Behat намного больше нацелен на этот стиль.

Поскольку мы говорим о функциональных тестах браузеров, а не о модульных тестах, вы, вероятно, не думаете о некоторых более мощных модульных тестах, которые у них есть; вы просто хотите написать автоматизацию браузера. Для этого вы действительно можете выбрать, какой из двух вам подходит.

Существуют тонкие краевые случаи, в которых каждый из них имеет сильные стороны друг над другом, но в большинстве случаев они оба могут запускать тестовые скрипты в разных браузерах.

Мои предпочтения касались Бехат/Минк, на том основании, что он более гибкий; он может поддерживать несколько механизмов автоматизации браузеров, включая Selenium и Sahi, что означает, что если вы столкнулись с проблемой с одним, вы можете переключить свои тесты на другие и продолжить. У нас была эта точная ситуация, пытаясь получить некоторые сценарии тестирования Mink для работы в Selenium; переход на Sahi заставлял его работать и включал изменение только одной строки тестового кода.

Также стоит добавить, что Mink можно использовать самостоятельно без Behat, если вы не хотите писать тесты стиля BDD.

Ответ 2

Я бы подумал, что Behat будет дополнять PHPunit. Я имею в виду дополнять, используя Behat для тестирования поведения, PHPUnit для тестирования кода. Используя BDD/TDD, сначала нужно написать тест, основанный на пользовательской истории. Чтобы пройти тест, вы, как правило, пишите несколько тестов PHPUnit, используя TDD, чтобы создать приложение, которое сможет пройти тест BDD.

BDD должен проверять поведение и не знать код приложения, например, сущности/контроллеры/интерфейсы. Вы должны иметь возможность обменивать полное приложение с другим и все еще проходить все тесты, когда поведение приложения одинаковое.

TDD, помимо других вещей, подобных вашему разуму, должен определять вашу структуру классов и взаимодействие между ними. Кроме того, они доказывают, что ваши методы делают то, что они должны делать, делают намерение понятным и позволяют рефакторинг без страха.

Ответ 3

кажется, все неправильно с этим ответом.

phpunit - это модульное тестирование, и тем самым он придерживается TDD.

phpspec и behact - это функциональное тестирование, поэтому BDD.

они дополняют друг друга, идеальным сценарием будет проект, в котором у вас есть оба типа тестов, но это может ограничиваться только крупными проектами, которые могут позволить себе это сделать.

TDD test single или всего лишь несколько классов. BDD проверит полную функцию для нескольких модулей в вашем приложении.