Вышла новая версия Codeception 5.0

Вышла новая версия Codeception 5.0. Codeception - это библиотека для тестирования, построенная поверх PHPUnit. Это версия работает только с PHP 8.0 и выше. Несмотря на это сохранена обратная совместимость.
Новая версия готова к переходу на PHPUnit 10. Так же эта версия поддерживает Symfony 6.
Ниже описаны некоторые новые функции:

Вышла новая версия Codeception 5.0

Новая структура каталогов

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

Дата публикации: 2022-07-28

Просмотры: 35
Подписка на новости
Узнавайте о новых статьях первыми.
Профиль