Отчет о покрытии кода неправильно указывает 100% покрытие контроллера

Я запускаю серию тестов 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% покрытие Отчет показывает 100% покрытие помощника

но внутри мы видим Какой-то текст вверху одного из методов - всего 1099 строк

Он состоит из 1099 строк, иногда с зеленым... но без красного.


person Alex C    schedule 26.01.2011    source источник
comment
Неважно, как код был вызван. Если какая-либо строка выполняется, то она будет зеленой. Пожалуйста, дайте мне знать, как вы выполняете команду phpunit и, возможно, код файла phpunit.xml   -  person Gaurav    schedule 26.01.2011
comment
Можете ли вы опубликовать снимок экрана с покрытием кода?   -  person Jake N    schedule 27.01.2011


Ответы (1)


Отчет о покрытии кода показывает три различных показателя: классы, методы и функции и строки.

Классы — это отчет о количестве протестированных классов в объекте. Итак, если у вас есть один класс в файле, и вы тестируете часть этого класса, это показывает, что вы тестируете 100% классов.

Если у вас есть два класса в файле, и вы тестируете один класс, у вас будет 50% охват класса.

person Jason Lotito    schedule 27.01.2011
comment
Но линии, которые выполняются, не меняют цвет. Они все просто белые - person Alex C; 27.01.2011
comment
Хм, да, это совсем другая тема. Не уверен в этом. XML-файл, который вы используете, такой же, как у меня, в том, что касается параметров конфигурации покрытия кода. Глупый вопрос, но можете ли вы проверить правильность изменения строк на уровне HTML? - person Jason Lotito; 27.01.2011
comment
Просто чтобы немного помочь, вы увидите lineCov для строк, которые покрыты, lineNoCov для строк, которые не покрыты, и lineDeadCode, все как классы HTML. По крайней мере, они для меня такие. - person Jason Lotito; 27.01.2011