• Час читання ~1 хв
  • 15.03.2023

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

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

а також налаштувати паралельне тестування на новому проекті.

Налаштування

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

Паралельне проведення тестів у новому проекті не допоможе прискорити наші тестові запуски; Однак у міру зростання ваших тестів ви помітите підвищення продуктивності.

По-перше, створіть свіжий додаток Laravel, і ми будемо контролювати його версію, щоб ми могли бачити зміни на цьому шляху, коли ми працюємо над налаштуванням.

laravel new parallel-demo --git

Команда laravel створює наш проект і виконує код, тому ми отримуємо чисту установку і єдиний коміт.

Щоб використовувати прапор Ларавеля --parallel в PHPUnit, ми повинні встановити ParaTest. Laravel робить це легко, спонукаючи нас зробити це, коли ми вперше запускаємо тести: Paratest тепер встановлений належним чином,

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)

і ми можемо перейти до запуску тестів з покриттям та налаштуванням звітів 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/ в корені проекту, помістити її кудись в , або вбудувати в tests/ storageпапку, як вище. Вибір за вами!

Використовуючи наведений вище приклад шляху, додайте до свого .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