Я хочу определить, какие файлы охватываются каждым из моих наборов тестов отдельно. Я использую PHPUnit 10.5 с Xdebug для покрытия кода в моем проекте PHP 8.1.
Вот как выглядит мой файл конфигурации phpunit.xml
:
<?xml version = "1.0" encoding = "UTF-8"?>
<phpunit>
<testsuites>
<testsuite name = "example">
<file>./ExampleTest.php</file>
</testsuite>
</testsuites>
<source>
<include>
<directory suffix = ".php">../src</directory>
</include>
</source>>
<coverage>
<report>
<html outputDirectory = "html-coverage"/>
</report>
</coverage>
</phpunit>
Я провел небольшое исследование, но не нашел ничего полезного. Есть ли способ добиться этого?
Может быть, поиск покрытия кода для одного набора тестов считается плохой практикой, и поэтому никто не пытался это сделать?
Любые советы или идеи будут очень признательны. Спасибо!
Я думал, что попробовал запустить определенный набор тестов, но этого не произошло. Это может быть хорошим способом сделать это, поскольку он генерирует отчет о покрытии с 0%-ным покрытием для любых файлов, которые не охвачены набором тестов. Ваш комментарий помог мне найти действенное решение моей проблемы. Однако я считаю, что может быть лучший способ добиться этого, но я еще не понял этого. Если у кого-то есть более элегантное решение, я бы хотел его услышать.
Я нашел интересный обходной путь для достижения этой цели.
Отчет о покрытии XML включает элемент <coverage>
, в котором перечислены тесты, охватывающие класс:
<?xml version = "1.0"?>
<phpunit xmlns = "https://schema.phpunit.de/coverage/1.0">
<file name = "Example.php" path = "\path">
<!-- ... -->
<coverage>
<line nr = "9">
<covered by = "someNamespace\ExampleTest::testSomething"/>
</line>
</coverage>
<!-- ... -->
</file>
</phpunit>
Моя главная цель — определить, какой набор тестов охватывает какие файлы. Обладая этой информацией, я смогу создать алгоритм, отображающий связи между элементами, тестовыми классами и наборами тестов.
Это не то решение, на которое я надеялся; Я ожидал более простого способа прямой корреляции наборов тестов с их покрытием.
Если у кого-то есть более эффективный и чистый способ сделать это, поделитесь своим решением! :)
А как насчет запуска только определенного набора тестов?
phpunit --testsuite example
docs.phpunit.de/en/10.5/…