PHPUnit не создает отчет о покрытии кода с помощью ZendFW

У меня есть 2 каталога: проект1 и проект2. Когда я запускаю PHPUnit в project1/tests, он работает нормально. Когда я запускаю его в project2/tests, он работает нормально, за исключением того, что не создает никаких отчетов о покрытии кода. Файлы конфигурации phpunit.xml практически идентичны. Есть некоторые различия в бутстрапах, которые каждый вызывает, однако я не думаю, что они существенны. (Я проверил пути, и они в порядке).

Любые идеи? Как я могу диагностировать эту проблему?

Вот phpunit.xml из проекта2/тесты:

<phpunit bootstrap="./TestBootstrap.php">
<testsuite name="OpenCompany">
    <directory>./</directory>
</testsuite>
<filter>
    <whitelist>
        <directory suffix=".php">..\library\</directory>
        <directory suffix=".php">..\application\</directory>
        <exclude>
            <directory suffix=".phtml">..\application\</directory>
        </exclude>
    </whitelist>
</filter>
<logging>
    <log type="coverage-html" target="./output/report" charset="UTF-8" yui="true" highlight="false" lowUpperBound="35" highLowerBound="70"/>
    <log type="coverage-clover" target="./output/coverage.xml"/>
    <log type="json" target="./output/logfile.json"/>
    <log type="tap" target="./output/logfile.tap"/>
    <log type="junit" target="./output/logfile.xml" logIncompleteSkipped="false"/>
    <log type="testdox-html" target="./output/testdox.html"/>
    <log type="testdox-text" target="./output/testdox.txt"/>
</logging>

And here's the TestBootstrap.php:

    <?php

// Adapted from tutorial by Matthew Weier O'Phinney
// Tutorial is dated 11/09/2008

// Set location
date_default_timezone_set('Australia/Sydney');

// Set Error Reporting to All, Strict
error_reporting(E_ALL | E_STRICT);

// Sets include paths relative to location of TestBootstrap.php
$root           = realpath(dirname(__FILE__).'/../');  // resolves to project directory
$library        = $root.'/library';
$tests          = $root.'/tests';
$models         = $root.'/application/models';
$dbtables       = $root.'/application/models/DbTable';
$controllers    = $root.'/application/controllers';

$path = array($models, $library, $dbtables, $tests, get_include_path());
set_include_path(implode(PATH_SEPARATOR, $path));

// Set Application Constants
if (!defined('APPLICATION_PATH')) {define('APPLICATION_PATH', $root.'/application');}
if (!defined('APPLICATION_ENV')) {define('APPLICATION_ENV', 'testing');}

// Get Autoloading happening
require_once 'Zend/Loader/Autoloader.php';
Zend_Loader_Autoloader::getInstance();

// Setup a default DB connection
$db = Zend_Db::factory('Pdo_Mysql', array(
        'host'      =>  'localhost',
        'username'  =>  'root',
        'password'  =>  '',
        'dbname'    =>  'openco_v1_0'
        )
    );
Zend_Db_Table_Abstract::setDefaultAdapter($db);

// Store some stuff in the registry
// Zend_Registry::set('testRoot', $root);
// Zend_Registry::set('testBootstrap', $root.'/application/bootstrap.php');

// Unset global variables that are no longer required
unset($root, $library, $models, $dbtables, $controllers, $tests, $path);

Любая помощь приветствуется!


person DatsunBing    schedule 12.03.2011    source источник
comment
У вас установлено и/или включено расширение xdebug?   -  person Marcin    schedule 12.03.2011


Ответы (1)


Хорошо, разобрался с этим. В моделях были ошибки (предположительно ошибки синтаксического анализа), поэтому PHPUnit не мог разобраться в коде, чтобы определить, насколько он был покрыт тестами.

Я исключил тесты /applications/models из белого списка, и теперь он работает нормально. После того, как я проработаю модели и исправлю ошибки, я уберу исключение.

person DatsunBing    schedule 14.03.2011