Сбой покрытия кода с PHPUnit и Zend Framework - PullRequest
3 голосов
/ 08 августа 2010

У меня есть некоторые проблемы с отчетами о покрытии кода в PHPunit и Zend Framework. Всякий раз, когда я запускаю тест phpunit, покрытие кода не выдает следующее сообщение:


PHPUnit 3.4.15 by Sebastian Bergmann.

I.......III.I................................IIIIIIIIIIIIIII 60 / 93
IIII....I....I..II..II.....IIIIII

Time: 4 seconds, Memory: 22.25Mb

OK, but incomplete or skipped tests!
Tests: 93, Assertions: 174, Incomplete: 36.

Generating code coverage report, this may take a moment.PHP Fatal error:  Cannot redeclare class Klunde_Auth in /Users/kristianlunde/workspaces/private/klunde/Library/Klunde/Auth.php on line 9

Fatal error: Cannot redeclare class Klunde_Auth in /Users/kristianlunde/workspaces/private/klunde/Library/Klunde/Auth.php on line 9

Мой файл phpunit.xml выглядит так:


<phpunit bootstrap="./application/bootstrap.php" colors="true">
 <testsuite name="Klunde">
  <directory>./application/</directory>
  <directory>./Library/Klunde</directory>
 </testsuite>

 <filter>
  <whitelist>
   <directory suffix=".php">../application</directory>
   <directory suffix=".php">../Library/Klunde</directory>
   <exclude>
    <directory suffix=".phtml">../application/</directory>
    <file>../application/Bootstrap.php</file>
             <file>../application/controllers/ErrorController.php</file>
            </exclude>
  </whitelist>
 </filter>

 <logging>
  <log type="coverage-html" target="./log/report" charset="UTF-8" yui="true"
   highlight="true" lowUpperBound="50" highLowerBound="80" />

  <log type="testdox-html" target="./log/testdox.html" />
 </logging>
</phpunit>

Я сделал

var_dump(get_included_files());

вверху файла Auth, и он попытался включить файл более одного раза, прежде чем произошел сбой.

Я также пытался удалить файл Klunde_Auth.php, просто чтобы посмотреть, была ли это проблема с одним файлом, но затем ошибка возникает в следующем файле в каталоге Library / Klunde.

Я использую OSX Snow Leopard с PHP 5.3.1, XDebug 2.1.0beta3 и PHPUnit 3.4.15

Любая помощь и помощь будут высоко оценены.

Спасибо.

1 Ответ

2 голосов
/ 08 сентября 2010

добавьте вызов debug_print_backtrace () в начало вашего Klunde_Auth.php, прежде чем начнется само объявление класса.

Затем снова запустите тестовый набор, теперь вы будете видеть всю обратную трассировку при каждом включении файла, это должно помочь вам выяснить, что / откуда он включается дважды.

...