PHPUnit не создает отчет о покрытии кода с ZendFW - PullRequest
2 голосов
/ 12 марта 2011

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

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

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

<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>

А вот и 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);

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

1 Ответ

2 голосов
/ 14 марта 2011

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...