Почему в Laravel не удается обеспечить покрытие кода для пользовательских модулей?Php

Кемеровские программисты php общаются здесь
Ответить
Anonymous
 Почему в Laravel не удается обеспечить покрытие кода для пользовательских модулей?

Сообщение Anonymous »

Я настроил PHPUnit для работы с двумя разными пространствами имен в проекте, отличном от Laravel, и он работает отлично. Вот структура папок моего рабочего примера:

Код: Выделить всё

├── docker-compose.yml
├── Dockerfile
├── composer.json
├── phpunit.xml
├── app/
│   └── Example.php
├── modules/
│   └── Example.php
└── tests/
├── AppTest.php
└── ModulesTest.php
В этой настройке phpunit.xml выглядит следующим образом:

Код: Выделить всё


tests




app
modules


А пространства имен определены в композиторе.json следующим образом:

Код: Выделить всё

"autoload": {
"psr-4": {
"App\\": "app/",
"Modules\\": "modules/"
}
}
Для создания отчета о покрытии я запускаю следующую команду:

Код: Выделить всё

docker compose exec php ./vendor/bin/phpunit --coverage-html coverage-report
В этом примере, отличном от Laravel, в отчете о покрытии кода правильно показаны пространства имен приложений и модулей, охваченные тестами.
Изображение

Вы можете просмотреть полную версию репозиторий моего примера по адресу https://github.com/iwasherefirst2/poc-coverage
Проблема в Laravel:
Когда я копирую эту настройку в новой версии Laravel 10.48 .24 с той же структурой и конфигурацией, отчет о покрытии не включает папку модулей, хотя тесты для нее проходят успешно.
Изображение

Вот информация, специфичная для Laravel:
  • Версия Laravel: 10.48.24
  • Версия PHP: 8.2.26
  • Версия PHPUnit: 10.x (одинаково в обоих случаях) проекты)
Оба проекта используют одну и ту же версию PHPUnit, а тесты в Laravel представляют собой простые модульные тесты (use PHPUnit\Framework\TestCase). Однако отчет о покрытии моего приложения Laravel включает только пространство имен приложения, полностью опуская модули.
Вот также полный репозиторий, который можно посмотреть на https://github.com/iwasherefirst2/poc. -laravel-coverage-modules
Что я пробовал:
  • Убедился, что конфигурация пространства имен в композиторе.json правильна и композитор dump-autoload.
  • Использовала одну и ту же структуру phpunit.xml в обоих проектах.
  • Проверено, что тесты для папки модулей успешно выполняются в Laravel.< /li>
Основные наблюдения:
  • Проект Laravel идентичен рабочему примеру, за исключением для дополнительных файлов и зависимостей, специфичных для Laravel.
  • Несмотря на это, отчет о покрытии исключает пространство имен модулей в моем приложении Laravel, но не в моем простом приложении php.
Вопрос:Почему отчет о покрытии кода PHPUnit не включает пространство имен модулей в Laravel, хотя тесты выполняются и проходят успешно? Может ли это быть связано с интеграцией PHPUnit в Laravel или конфигурацией автозагрузки? Как я могу решить эту проблему и обеспечить полный охват обоих пространств имен в Laravel?

Подробнее здесь: https://stackoverflow.com/questions/792 ... in-laravel
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Php»