• Время чтения ~1 мин
  • 15.03.2023

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

Я лично копаю HTML-отчеты через XDebug, так как я люблю визуализировать покрытие строка за строкой во время работы над функцией:

я покажу вам, как быстро настроить HTML-отчеты в этом уроке, а также настроить параллельное тестирование в новом проекте.

Параллельное тестирование настроек

официально поддерживается в Laravel с Artisan начиная с Laravel v8.25. Давайте рассмотрим настройку параллельного тестирования и отчетов о покрытии, создав новый проект Laravel и пройдя через процесс установки Paratest и настройки наших отчетов.

Параллельный запуск тестов в новом проекте не поможет ускорить наши тестовые запуски; однако по мере роста тестов вы заметите, что производительность увеличивается.

Во-первых, создайте новое приложение Laravel, и мы будем управлять его версиями, чтобы мы могли видеть изменения на этом пути по мере работы над установкой.

laravel new parallel-demo --git

Команда laravel создает наш проект и фиксирует код, поэтому мы получаем чистую установку и одну фиксацию.

Чтобы использовать флаг Laravel --parallel в PHPUnit, мы должны установить ParaTest. Laravel делает это легко, побуждая нас сделать это при первом запуске тестов:

php artisan test --parallel

Running tests in parallel requires "brianium/paratest". Do you wish to install it as a dev dependency? (yes/no) [no]:
> yes
Using version ^6.6 for brianium/paratest
./composer.json has been updated
# ...
ParaTest v6.6.4 upon PHPUnit 9.5.25 #StandWithUkraine

..                                                                  2 / 2 (100%)

Time: 00:00.300, Memory: 22.00 MB

OK (2 tests, 2 assertions)

Paratest теперь установлен правильно, и мы можем перейти к запуску тестов с покрытием и настройке HTML-отчетов.

Отчеты о

покрытии Еще одним полезным тестовым флагом является --coverage, который выводит красивую текстовую версию на терминал:

php artisan test --parallel --coverage

ERROR  Code coverage driver not available. Did you set Xdebug's coverage mode?

В зависимости от вашей локальной настройки PHP вы можете получить приведенное выше сообщение об ошибке, предлагающее вам установить режим покрытия Xdebug. Мы не будем вдаваться в подробности настройки инструментов покрытия кода, но доступно несколько вариантов. Я не возражаю против использования покрытия Xdebug 3, так как я часто использую Xdebug для отладки в разработке.

Чтобы заставить покрытие работать, вам нужно увидеть режим Xdebug для покрытия:

XDEBUG_MODE=coverage php artisan test --parallel --coverage

После выполнения приведенной выше команды вы должны увидеть что-то похожее для ваших отчетов о покрытии:

отчеты о

While text-based coverage is helpful, I like using отчеты о to visualize lines of code that are covered and not covered. They are highlighted in green and red:

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

Добавление HTML-отчетов довольно просто. phpunit.xml Откройте файл, найдите <coverage/> и добавьте <report/> тег:

<coverage processUncoveredFiles="true">
    <include>
        <directory suffix=".php">./app</directory>
    </include>
    <report>
        <html outputDirectory="tests/Coverage/html"/>
    </report>
</coverage>

Вы можете поместить покрытие в любое место, но вы, вероятно, захотите игнорировать созданные файлы из системы управления версиями. Возможно, вы могли бы использовать папку coverage/ в корне проекта, поместить ее где-то в storage, или встроить ее в папку tests/ , как указано выше. Выбор за вами!

Используя приведенный выше пример пути, добавьте в файл следующее .gitignore :

# ...
tests/Coverage/

При выполнении тестов с покрытием он создаст HTML-отчет. Затем можно открыть tests/Coverage/html/index.html файл в браузере для просмотра отчета.

При этом у вас должна быть хорошая настройка для параллельного выполнения тестов и настройки HTML-отчетов для легкой визуализации покрытия в разработке!

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

Comments

No comments yet
Yurij Finiv

Yurij Finiv

Full stack

Про мене

Professional Fullstack Developer with extensive experience in website and desktop application development. Proficient in a wide range of tools and technologies, including Bootstrap, Tailwind, HTML5, CSS3, PUG, JavaScript, Alpine.js, jQuery, PHP, MODX, and Node.js. Skilled in website development using Symfony, MODX, and Laravel. Experience: Contributed to the development and translation of MODX3 i...

Об авторе CrazyBoy49z
WORK EXPERIENCE
Контакты
Ukraine, Lutsk
+380979856297