I am trying to start using PHPUnit with Zend Test for my Zend Framework application. I can run the PHPUnit command from the phpunit --configuration phpunit.xml command line. I tried to follow this tutorial , which is based on Matthew Weier O'Pinnie 's blog post . I get an error when PHPUnit tries to write a log file. Here is my phpunit.xml
<phpunit bootstrap="./Bootstrap.php" colors="true"> <testsuite name="Zend Framework Tests"> <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="./log/report" charset="UTF-8" yui="true" highlight="true" lowUpperBound="50" highLowerBound="80"/> <log type="testdox-html" target="./log/testdox.html"/> </logging> </phpunit>
My test bootstrap:
<?php //Set app paths and environment define('BASE_PATH', realpath(dirname(__FILE__) . '/../')); define('APPLICATION_PATH', BASE_PATH . '/application'); define('TEST_PATH', BASE_PATH . '/tests'); define('APPLICATION_ENV', 'testing'); //Set include path set_include_path('.' . PATH_SEPARATOR . BASE_PATH . '/library' . PATH_SEPARATOR . get_include_path()); //Set the default timezone date_default_timezone_set('America/Chicago'); ?>
And my ControllerTestCase, which I would like my test controllers to expand on:
<?php require_once 'Zend/Application.php'; require_once 'Zend/Test/PHPUnit/ControllerTestCase.php'; abstract class ControllerTestCase extends Zend_Test_PHPUnit_ControllerTestCase { public $_application; public function setUp() {
The error I get when PHPUnit is trying to write the log file is: Fatal error: Class 'Symfony\Component\Console\Command\Command' not found in C:\repositories\myfirstzend.com\includes\library\Doctrine\DBAL\Tools\Console\Command\ImportCommand.php on line 38
Any clues on what I'm doing wrong? I am on PHP 5.4, Windows 7, XAMPP 8.0, Pear has been updated, and I have the latest PHPUnit.
Refresh If I change my Bootstrap.php to the following from Matthew Weyer O'Pinnie's blog:
<?php ob_start(); error_reporting( E_ALL | E_STRICT ); date_default_timezone_set('GMT'); define('APPLICATION_ENV', 'testing'); $root = realpath(dirname(__FILE__) . '/../'); $library = $root . '/library'; $tests = $root . '/tests'; $models = $root . '/application/models'; $controllers = $root . '/application/controllers'; $path = array( $models, $library, $tests, get_include_path() ); set_include_path(implode(PATH_SEPARATOR, $path)); require_once 'Zend/Loader.php'; Zend_Loader::registerAutoload(); Zend_Registry::set('testRoot', $root); Zend_Registry::set('testBootstrap', $root . '/application/bootstrap.php'); unset($root, $library, $models, $controllers, $tests, $path);
I keep getting Symfony message from Doctrine. I guaranteed that I installed pear.symfony.com/Yaml. So itβs still broken.
If I remove the Doctrine link from my app.ini application for the application I am testing (which means that it is not loading), I still get an error. It seems that the loaders for each of the three parts (PHPUnit, ZF, Doctrine) are fighting each other. Is there any way around this?
Second update: I downgraded PHPUnit to 3.4.15, and I still have this problem. My next step is to move from PHP 5.4 to 5.3.x.
Third update: I am now on PHP 5.3.10 and see the same error.
If you need more information, please let me know.