Codeception — новости проекта

в 10:03, , рубрики: bdd, codeception, php, phpunit, selenium, tdd, метки: , , , ,

imageЯ уже писал на Хабре о Codeception — фреймворке для тестирования приложений на PHP. Если вы никогда раньше не писали тестов для вашего приложения, вам обязательно стоит взглянуть на Codeception. Он очень прост в использовании и сделан специально, чтобы уберечь разработчиков от рутины.

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

Инсталляция через Composer

Теперь для установки вам больше не нужен PEAR. С ним часто возникает много разных проблем, требующих бубна и шаманских песен. Если вы современный человек и забыли все ритуальные песни древних предков, попробуйте Composer. С его помощью вы легко можете установить сам Codeception, а также все необходимые библиотеки, в том числе Mink и PHPUnit.

Инструкции тут.

Поддержка фреймворков

Сейчас вы можете писать функциональные тесты для следующих фреймворков: Symfony2, Zend Framework, symfony, Kohana, SocialEngine. Последние два модуля, кстати, сделаны сторонними разработчиками, за что им отдельное спасибо. Их пример показывает, что сделать модуль под свой любимый фреймворк не так и сложно.

Генерация документации

Многие говорят, что тесты — лучшая документация. Но не всегда тесты пишутся с расчетом на чтение. В Codeception всё иначе, в Cest-тестах вы описываете свои действия и желаемый результат.

$I->testMethod('ServiceGroup::create');
$I->wantTo('create a group');
$I->executeTestedMethodWith('DemoGroup', 1)
	->seeInRepository('ModelGroup', array('name' => 'DemoGroup', 'user_id' => $user_id, 'type' => 'group'))
    ->seeResultIs('int');

Если вы используете систему генерации документации PhpDocumentator2 (бывший DocBlox), то с помощью встроенного в Codeception плагина этот тест будет добавлен к описанию метода. Он будет преобразован в текст и примет такой вид:

With this method I can create group

If I execute ServiceGroup::create(«DemoGroup»,1)
I will see in repository «ModelGroup»,{«name»:«DemoGroup»,«user_id»: 1, «type»: «group» }
I will see result is «int»

Теперь в документации будет информация о том как ведет себя тот или иной метод в зависимости от параметров. Как подключать плагин — читайте здесь.

Базовая поддержка CI систем

Теперь Codeception можно подключить к Continious Integration серверам, таким как Jenkins и Bamboo. К сожалению, протестировать интеграцию удалось пока только с Bamboo. Но результат пишется в XML и по идее должен легко подхватываться другими CI системами. Если с ними будут проблемы — сообщайте, всё оперативно подправим.

Всё это, а также много других вкусностей доступно в последней версии Codeception 1.0.8.
Устанавливайте, используйте.

А теперь ответы на популярные вопросы:

Зачем Codeception, если есть PHPUnit?

Открою секрет: Сodeception это не велосипед, а надстройка над PHPUnit. Она позволяет выполнять сценарные тесты на движке PHPUnit. При этом все ваши существующие тесты для PHPUnit Codeception сможет подхватит без каких-либо проблем. К ним вы сможете легко добавить функциональные и приемочные тесты. Очень многие задачи, требующие костылей (например, интеграция с Selenium, с БД) в Codeception уже решены.

Зачем Codeception, если есть Selenium?

Codeception умеет выполнять тесты для Selenium. Но тесты в Codeception легче поддерживать, они более гибкие. Например, вы можете часть тестов выполнять не в браузере, а через его эмулятор Goutte. Или вообще не использовать веб-сервер для тестирования, а обращаться к приложению напрямую. Это значительно уменьшит время выполнения ваших тестов. Кроме того, Codeception берет на себя все проблемы связанные с очисткой данных между тестами.

Зачем Codeception, если есть Behat?

Вопрос в стиле: зачем Linux, если есть Windows. Наличие альтернатив это всегда хорошо. Как минимум, система позволяющая писать приемочные тесты на PHP будет в экосистеме не лишней.

Планы на будущее

В ближайшем будущем добавиться покрытие кода и увеличиться количество поддерживаемых фреймворков. Но предлагайте и свои идеи. Что бы вы хотели видеть в Codeception?

Автор: Davert


* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js