Как можно иметь два набора тестов, связанных с различными приложениями в одном плагине? - PullRequest
0 голосов
/ 05 января 2011

В настоящее время я работаю с 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 Ответ

1 голос
/ 17 января 2011

На самом деле вам нужно создать два набора классов, которые реализуют интерфейс 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).

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

...