Создайте покрытие кода для одного набора тестов

Я хочу определить, какие файлы охватываются каждым из моих наборов тестов отдельно. Я использую 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>

Я провел небольшое исследование, но не нашел ничего полезного. Есть ли способ добиться этого?

Может быть, поиск покрытия кода для одного набора тестов считается плохой практикой, и поэтому никто не пытался это сделать?

Любые советы или идеи будут очень признательны. Спасибо!

А как насчет запуска только определенного набора тестов? phpunit --testsuite exampledocs.phpunit.de/en/10.5/…

duncan 02.07.2024 17:05

Я думал, что попробовал запустить определенный набор тестов, но этого не произошло. Это может быть хорошим способом сделать это, поскольку он генерирует отчет о покрытии с 0%-ным покрытием для любых файлов, которые не охвачены набором тестов. Ваш комментарий помог мне найти действенное решение моей проблемы. Однако я считаю, что может быть лучший способ добиться этого, но я еще не понял этого. Если у кого-то есть более элегантное решение, я бы хотел его услышать.

Kolobo 03.07.2024 08:57
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
2
2
63
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Я нашел интересный обходной путь для достижения этой цели.

Отчет о покрытии 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>

Моя главная цель — определить, какой набор тестов охватывает какие файлы. Обладая этой информацией, я смогу создать алгоритм, отображающий связи между элементами, тестовыми классами и наборами тестов.

Это не то решение, на которое я надеялся; Я ожидал более простого способа прямой корреляции наборов тестов с их покрытием.

Если у кого-то есть более эффективный и чистый способ сделать это, поделитесь своим решением! :)

Другие вопросы по теме