Hi,
To setup the unit tests I created a configuration file for phpunit (phpunit.xml) and a TestHelper.php in the test directory. The configuration basically says to phpunit which unit test needs to be executed and wich folders and files needs to be skipped in the coverage. In my config it just are all the unit test files in the application and library folder that are going to be executed.
The Testhelper needs to be extended by all your unit tests.
phpunit.xml
<phpunit bootstrap="./TestHelper.php" colors="true">
<testsuite name="Your Application">
<directory>./application</directory>
<directory>./library</directory>
</testsuite>
<filter>
<whitelist>
<directory suffix=".php">../application/</directory>
<directory suffix=".php">../library/App/</directory>
<exclude>
<directory suffix=".phtml">../application/</directory>
<directory suffix=".php">../application/database</directory>
<directory suffix=".php">../application/models/Entities</directory>
<directory suffix=".php">../application/models/mapping</directory>
<directory suffix=".php">../application/models/proxy</directory>
<directory suffix=".php">../application/views</directory>
<file>../application/Bootstrap.php</file>
<file>../application/modules/admin/controllers/ErrorController.php</file>
</exclude>
</whitelist>
</filter>
<logging>
<log type="coverage-html" target="./log/report" title="PrintConcept" charset="UTF-8" yui="true" highlight="true" lowUpperBound="35" highLowerBound="70" />
<log type="testdox" target="./log/testdox.html" />
</logging>
</phpunit>
TestHelper.php
<?php
error_reporting(E_ALL | E_STRICT);
// Define path to application directory
defined('APPLICATION_PATH')
|| define('APPLICATION_PATH', realpath(dirname(__FILE__) . '/../application'));
// Define testing application environment
define('APPLICATION_ENV', 'testing');
// Ensure library/ is on include_path
set_include_path(implode(PATH_SEPARATOR, array(
realpath(APPLICATION_PATH . '/../library'),
get_include_path(),
)));
/**
* Zend_Application
*/
require_once 'Zend/Application.php';
/**
* Base Controller Test Class
*
* All controller test should extend this
*/
require_once 'Zend/Test/PHPUnit/ControllerTestCase.php';
abstract class BaseControllerTestCase extends Zend_Test_PHPUnit_ControllerTestCase
{
public function setUp()
{
$application = new Zend_Application(APPLICATION_ENV,
APPLICATION_PATH . '/configs/application.ini');
$this->bootstrap = array($application->getBootstrap(), 'bootstrap');
Zend_Session::$_unitTestEnabled = true;
parent::setUp();
}
public function tearDown()
{
/* Tear Down Routine */
}
}
This only covers the initial setup for ZF and PHPunit