2011-01-05 1 views
0

В настоящее время я работаю с sfPhpUnitPlugin по проекту sf 1.4, и перед вами стоит проблема с тестированием плагина.Как можно иметь два набора тестов, связанных с различными приложениями в одном и том же плагине?

У меня есть плагин, который можно использовать в нескольких приложениях, и я хотел бы иметь набор тестов для каждого приложения. Как я могу организовать свои тесты, чтобы я мог легко сопоставлять приборы и тесты с конкретным приложением?

Мои апартаменты являются копиями этого шаблона, который поставляется с sfPhpunitPlugin:

<?php 

class {className} extends sfBasePhpunitTestSuite 
    implements sfPhpunitContextInitilizerInterface 
{ 
    /** 
    * Dev hook for custom "setUp" stuff 
    */ 
    protected function _start() 
    { 
     $this->_initFilters(); 
    } 

    /** 
    * Dev hook for custom "tearDown" stuff 
    */ 
    protected function _end() 
    { 
    } 

    protected function _initFilters() 
    { 
     $filters = sfConfig::get('app_sfPhpunitPlugin_filter', array()); 
     foreach ($filters as $filter) { 
     PHPUnit_Util_Filter::addDirectoryToFilter($filter['path'], $filter['ext']); 
     } 
    } 

    public function getApplication() 
    { 
     return '{application}'; 
    } 
} 

Я полагаю, я должен добавить что-то подобное в app.yml каждого приложения:

testunit: 
    sfPhpunitPlugin: 
    filter: 
     - {path: 'backend', ext: '.php'} 

, но мне трудно определить, как будет выглядеть путь к ключу, я под впечатлением, что это должен быть полный путь, потому что include_path не содержит путь к плагину, который я тестирую, когда вызывается addDirectoryToFilter(). Любые советы? Кто-нибудь еще это сделал?

ответ

1

На самом деле вам нужно создать два класса классов, которые внедрили интерфейс sfPhpunitContextInitilizerInterface и реализовать все необходимые методы.

Затем поместите эти две сюиты в двух разных папках, например:

SF_PLUGIN_DIR/YOUR_PLUGIN/тест/PHPUnit/блок/app1/App1TestSuite.php SF_PLUGIN_DIR/YOUR_PLUGIN/тест/PHPUnit/блок/app2/App2TestSuite .php

Все тесты в каталоге app1 или подкаталогах будут запускаться в приложении symfony, определенном в App1TestSuite.php, и в тех же правилах для каталога app2.

Если вы хотите динамически запускать тесты в разных приложениях, вы можете определить эту логику в методах, требуемых интерфейсом (getEnviroment и getApplication).

Не стесняйтесь спрашивать меня, есть ли у вас какие-либо вопросы.

+0

Является ли приложение определенным методом getApplication()? С вашим методом, конфигурация, которую я добавил в моем приложении (см. Вопрос), все еще нужна или нет? – greg0ire

+0

Функциональность фильтров не связана с настройкой контекста приложения. В следующем выпуске плагина я удалю его из-за того, что поведение фильтра было изменено в версии phpunit 3.5. –

+0

App.yml больше не используется для конфигурации плагина, а плагин имеет свой собственный phpunit.yml –

Смежные вопросы