Модульное тестирование с Zend Framework / Doctrine 2.0 - PullRequest
5 голосов
/ 18 августа 2010

Я хотел написать модульные тесты для моего приложения Zend Framework / Doctrine 2.0, но я не совсем понимаю, как настроить модульное тестирование в ZF.Кроме того, я хотел бы включить Doctrine 2.0 в эти модульные тесты.Как бы я занялся настройкой этого?Можете ли вы указать мне пример?

Спасибо

1 Ответ

2 голосов
/ 26 августа 2010

Для настройки модульных тестов я создал файл конфигурации для phpunit (phpunit.xml) и TestHelper.php в каталоге test. Конфигурация в основном говорит phpunit, какой модульный тест необходимо выполнить и какие папки и файлы необходимо пропустить в покрытии. В моей конфигурации это просто все файлы модульного теста в папке приложения и библиотеки, которые будут выполнены.

Testhelper должен быть расширен всеми вашими юнит-тестами.

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 */
    }
}

Это касается только начальной настройки для ZF и PHPunit

...