Анализ покрытия кода xdebug с простейшей структурой - PullRequest
2 голосов
/ 07 декабря 2010

Я провожу модульное тестирование с самой простой структурой и использую xdebug для отчетов о покрытии кода. позвольте мне объяснить вам мою проблему:

  • У меня есть класс, который я хочу проверить. Допустим, имя класса - pagination.php.
  • Я пишу еще один класс для тестирования. Я написал два тестовых примера, чтобы проверить класс нумерации страниц.
  • в двух тестовых примерах есть около 12 утверждений, которые дают мне правильный результат "Pass".
  • Теперь я хочу сгенерировать отчет о покрытии кода, для этого я использую xdebug, чтобы показать, что мои тесты покрывают весь код или нет. Я использую функцию xdebug_start_code_coverage () и для отображения результата использую функцию xdebug_get_code_coverage ().

Теперь проблема в том, что, когда я печатаю xdebug_get_code_coverage (), он дает мне 2-мерный ассоциативный массив с именем файла, номером строки и временем выполнения. результат примерно такой:

array
  'path/to/file/pagination.php' => 
    array
      11 => int 1
      113 => int 1

строка 11 - начало класса, а строка 113 - конец класса. Я не знаю, почему это не происходит внутри класса и почему оно не обеспечивает покрытие операторов для функций класса. Тем не менее, мои тесты выглядят нормально для меня, и я знаю, что все условия и ветвление покрытия работают.

Я буду очень признателен, если вы поможете мне в этом отношении и поможете мне решить эту проблему.

Может быть, я что-то здесь упустил. Если вы хотите что-то еще, пожалуйста, дайте мне знать.

Ответы [ 2 ]

1 голос
/ 29 января 2011

Я реализовал XDebug-CC для класса с вызванными методами, и он отлично работает.Хотя я должен сказать, что я немного озадачен тем, как этот инструмент определяет «исполняемый код», он определенно учитывает методы.

Вы можете проверить расположение ваших xdebug_start_code_coverage () и xdebug_get_code_coverage (), так какони должны быть вызваны в самом начале и в самом конце.

Также вы можете проверить свою версию XDebug, так как с момента выпуска этой функции произошли некоторые улучшения точности.

Бест

Рафаэль

0 голосов
/ 19 марта 2012

SimpleTest имеет расширение покрытия, которое довольно легко настроить.IIRC это только в svn, а не в обычных пакетных загрузках.(обычно в простейших / расширения / покрытия /)

Вы можете посмотреть статьи с примерами того, как это реализовать:

http://www.acquia.com/blog/calculating-test-coverage http://drupal.org/node/1208382

...