Я запускаю серию тестов PHPunit и имею контроллер, который сообщает о 100% покрытии. Однако в отчете о покрытии только 5 из 84 строк кода отмечены «зеленым».
Мне интересно, какие факторы могут быть причиной этой проблемы?
Одним из интересных моментов, который может быть причиной, являются "непрямые вызовы". Этот конкретный контроллер является родителем ряда других контроллеров, и, поскольку многие другие объекты наследуют от него, возможно, код вызывается где-то еще... но тогда он не станет зеленым?
В настоящее время единственным методом, который становится зеленым, является метод __construct
.
Я не знаю, достаточно ли этого на самом деле, но если кто-то знает немного больше о том, как модульное тестирование определяет охват, я бы хотел это услышать.
Изменить в ответ на комментарий Гаурава:
Командная строка phpunit phpunit --configuration admin.xml
и admin.xml читает
<phpunit bootstrap="./admin/applications/admin/bootstrap.php" colors="true">
<testsuite name="AdminTestSuite">
<directory suffix=".php">./admin/applications/admin/</directory>
<directory suffix=".php">./admin/applications/shared/</directory>
</testsuite>
<filter>
<whitelist>
<directory suffix=".php">../admin/applications/admin/controllers</directory>
<directory suffix=".php">../admin/applications/shared/controllers</directory>
<directory suffix=".php">../admin/applications/shared/helpers</directory>
<directory suffix=".php">../admin/lib/controllers</directory>
<directory suffix=".php">../admin/lib/helpers</directory>
<directory suffix=".php">../admin/lib/models</directory>
<directory suffix=".php">../admin/lib/utils</directory>
</whitelist>
<blacklist>
<file>../dm_admin/applications/shared/controllers/DashboardController.php</file>
<directory suffix=".php">../admin/lib/crons</directory>
</blacklist>
</filter>
<logging>
<log type="coverage-html" target="/projects/ut/admin/" charset="UTF-8"
yui="true" highlight="true"
lowUpperBound="50" highLowerBound="80"/>
<log type="testdox-html" target="/projects/ut/admin/testdox.html" />
</logging>
</phpunit>
В ответ на jakenoble:
помощник читает 100% покрытие
но внутри мы видим
Он состоит из 1099 строк, иногда с зеленым... но без красного.