Вышла новая версия Codeception 5.0
Вышла новая версия Codeception 5.0.
Это версия работает только с PHP 8.0 и выше.
Несмотря на это сохранена обратная совместимость.
Новая версия готова к переходу на PHPUnit 10. Так же эта версия поддерживает Symfony 6.
Ниже описаны некоторые новые функции:
Новая структура каталогов
Codeception 5 теперь соответствует стандарту кодирования PSR-12. Таким образом, все тесты и классы будут иметь собственное пространство имен Tests. Следовательно была обновлена структура каталогов:
tests/
_output
Acceptance
Functional
Support/
_generated/
Data/
Helper/
Unit/
namespace Tests\Acceptance;
use \Tests\Support\AcceptanceTester;
class LoginCest
{
public function tryToTest(AcceptanceTester $I)
{
$I->amOnPage('/');
}
}
Обновление с 4 версии
Codeception 5 совместим со структурой каталогов Codeception 4. Поэтому, если вы не хотите сейчас менять расположение файлов, просто сохраните существующий файл codeception.yml
, и все в порядке.
Если вы все таки хотите перейти на новую структуру каталогов Codeception 5, то вот новое значение по умолчанию codeception.yml
:
namespace: Tests
support_namespace: Support
paths:
tests: tests
output: tests/_output
data: tests/Support/Data
support: tests/Support
envs: tests/_envs
actor_suffix: Tester
extensions:
enabled:
- Codeception\Extension\RunFailed
Ниже приведен список дальнейших действий для перехода:
-
Переименуйте файлы конфигурации:
acceptance.suite.yml => Acceptance.suite.yml
functional.suite.yml => Functional.suite.yml
unit.suite.yml => Unit.suite.yml
-
Внутри этих файлов пропишите новое пространство имен:
modules: enabled: - Tests\Support\Helper\Unit
-
В вашем composer.json так же пропишите новое пространство имен:
"autoload-dev": { "psr-4": { "Tests\\": "tests/" } },
-
В ваших
tests/Support/Acceptance|Functional|UnitTester.php
пропишите новое пространство имен. -
Запустите
vendor/bin/codecept build
, чтобы создать файлы в форматеtests/Support/_generated
. -
Измените пространства имен во всех ваших файлах
test/cest
. -
Запустите тесты с заглавными буквами:
vendor/bin/codecept run Unit
Атрибуты
Аннотации были важной частью среды тестирования Codeception. Несмотря на то, что они не были конструкциями на родном языке, они оказались достаточно хорошими для отделения теста от его метаданных. Мы считаем, что тест не должен включать код, который не относится к тестовому сценарию.
В PHP 8 появились нативные атрибуты. В новой версии Codeception лучше их использовать.
#[Group('important')]
#[Group('api')]
#[Examples('GET', '/users')]
#[Examples('GET', '/posts')]
#[Env('staging-alpha')]
#[Env('staging-beta')]
#[Env('production')]
#[Prepare('startServices')]
public function testApiRequests(ApiTester $I, Example $e)
{
$I->send($e[0], $e[1]);
$I->seeResponseCodeIsSuccessful();
$I->seeResponseIsJson();
}
Список доступных атрибутов:
- Before - указывает метод, который должен выполняться перед каждым тестом
- After - указывает метод, который должен выполняться после каждого теста
- Group - устанавливает группу для теста
- Skip - пропускает текущий тест
- Incomplete - помечает тест как незавершенный
- Depends - устанавливает тест, который должен быть выполнен перед текущим
- Prepare - устанавливает метод для запуска для инициализации среды (сервер запуска, браузер и т.д.)
- DataProvider - указывает метод, который предоставляет данные для управляемых данными тестов
- Examples - устанавливает данные для управляемых данными тестов внутри аннотации
- Env - устанавливает значение среды для текущего теста
- Given, When, Then - помечает метод как шаг BDD
Другие изменения
Ниже приведен список внесенных изменений:
- Требуется PHP 8.0 или выше
- Совместим с PHPUnit 9 и готов для PHPUnit 10
- Совместимость с Symfony 4.4 - 6.0
- Более строгая проверка для phpdotenv v5
- Генерировать исключение, если в конфигурации пакета отсутствует настройка актера.
- Удалена
generate:cept
команда - Удалены настройки
disallow_test_output
иlog_incomplete_skipped
. - Удалена настройка
paths.log
- Удалена настройка пакета
class_name
- Удалены глобальные настройки
actor
- Удаленный
Configuration::logDir
метод - Перемещен XmlBuilderкласс в модуль SOAP
- Раздельное выполнение тестов и отчеты из PHPUnit
- Реализация пользовательских отчетов TestListener больше не поддерживается и должна быть преобразована в расширения.
- Добавлено необязательное значение для fail-fast параметра
- Удалены JSON и TAP логеры
- Убрана функция черного списка покрытия кода.
- Удалены устаревшие псевдонимы классов
- Codeception\TestCase\Test
- Codeception\Platform\Group
- Codeception\Platform\Group
- Codeception\TestCase
- В кодовую базу введены строгие типы.
Ссылка на источник и полную статью: https://codeception.com/07-28-2022/codeception-5.html