Почему PHPUnit выполняет код при генерации отчета о покрытии? - PullRequest
4 голосов
/ 24 ноября 2010

Уважаемые стекировщики, Мы разрабатываем веб-приложение на основе cakephp. CakePHP оказывается немного сложным для использования в режиме TDD, и поэтому мы пытаемся разработать как можно меньше кода на самой платформе, извлекая всю бизнес-логику в классы, которые не зависят от cakephp. Таким образом, мы можем тестировать наши библиотеки с использованием phpunit с минимальными проблемами. Однако мы хотим включить непроверенный код в наш отчет о покрытии больше, чем что-либо, чтобы следить за количеством связующего кода между тортом и нашими библиотеками, который мы не можем протестировать. Проблема заключается в том, что, говоря phpunit об учете этого кода, он сходит с ума при разборе и выполнении кода cakephp, и он с треском ломается. Мой вопрос: почему phpunit выполняет этот код вообще? Есть ли что-то, чего мы здесь не понимаем или делаем неправильно? Вот файл phpunit.xml, который мы используем:

<?xml version="1.0" encoding="utf-8" ?>

<phpunit backupGlobals="true"
         backupStaticAttributes="false"
         colors="true"
         convertErrorsToExceptions="true"
         convertNoticesToExceptions="true"
         convertWarningsToExceptions="true"
         processIsolation="false"
         stopOnFailure="false"
         syntaxCheck="false"
         testSuiteLoaderClass="PHPUnit_Runner_StandardTestSuiteLoader">
  <filter>
    <whitelist addUncoveredFilesFromWhitelist="true">
      <directory suffix=".php">app</directory>
      <exclude>
        <directory suffix=".php">tests</directory>
        <directory suffix=".php">app/webroot</directory>
        <directory suffix=".php">app/plugins</directory>
        <directory suffix=".php">app/vendors</directory>
        <directory suffix=".php">app/config</directory>
        <directory suffix=".php">app/tmp</directory>
        <directory suffix=".php">cake</directory>
        <directory suffix=".php">vendors</directory>
      </exclude>
    </whitelist>
  </filter>
</phpunit>

Спасибо за любую помощь.

Ответы [ 2 ]

3 голосов
/ 20 января 2011

Вам необходимо добавить файлы cakephp в черный список . Вы должны быть в состоянии сделать это в своем конфигурационном файле xml:

<filter>
  <blacklist>
    <directory suffix=".php">/path/to/files</directory>
    <file>/path/to/file</file>
    <exclude>
      <directory suffix=".php">/path/to/files</directory>
      <file>/path/to/file</file>
    </exclude>
  </blacklist>
</filter>

Более подробная информация здесь

0 голосов
/ 30 апреля 2011

Почему phpunit вообще выполняет этот код?

Это происходит потому, что ему нужно получить информацию о классах, методах и функциях, которые тоже не рассматриваются. Он включает в себя файлы, которые он находит, и использует Reflection , чтобы найти всю информацию о классах. Это проще, чем анализировать вручную и анализировать проанализированные токены файла PHP.

...