PHPUnit: несколько загрузочных или XML-файлов? - PullRequest
7 голосов
/ 07 августа 2010

У меня есть PHP MVC-фреймворк с несколькими «приложениями» в этой системе, организация выходит

\project\apps\app1\
\project\apps\app2\
\project\apps\shared\

Каждое приложение может иметь свой собственный набор контроллеров

\project\apps\app1\controllers\FooContoller.php
\project\apps\app2\controllers\FooContoller.php
\project\apps\shared\controllers\BarContoller.php

Я хотел бы настроить мое пространство для тестирования PHPUnit, чтобы иметь возможность тестировать каждый из каталогов приложений, но я надеюсь сделать это "лучшим" способом.

Настройка PHPUnit выглядит так:

\project\PHPUnit
\project\PHPUnit\phpunit.xml
\project\PHPUnit\apps\app1\bootstrap.php
\project\PHPUnit\apps\app1\controllers
\project\PHPUnit\apps\app1\controllers\FooControllerTest.php
\project\PHPUnit\apps\app2\bootstrap.php
\project\PHPUnit\apps\app2\controllers
\project\PHPUnit\apps\app2\controllers\FooControllerTest.php

Теперь возникает вопрос: каков наилучший способ настройки файлов phpunit.xml?

В своем нынешнем виде я попытался включить оба приложения в качестве собственного набора тестов в файл XML, но довольно быстро наткнулся на «Cannot Redeclare Class: FooController».

На мой взгляд, идеальной ситуацией было бы настроить XML так, чтобы все тесты выполнялись для app1 , затем память очищалась и все тесты выполнялись для app2,

Возможно, однако, что с точки зрения наилучшей практики, лучше иметь несколько файлов XML, по одному на каждое приложение. (Тогда, возможно, пакетный / шеллскрипт файл для запуска "test all" или test X)

Если мы посмотрим на «типичный» файл конфигурации PHPUnit XML:

<phpunit bootstrap="./apps/app1/bootstrap.php" colors="true">
    <testsuite name="App1TestSuite">
        <directory>./</directory>
    </testsuite>
    <filter>
        <whitelist>
        <directory suffix=".php">./apps/app1/controllers/</directory>        
    <directory suffix=".php">./apps/shared/</directory>
        </whitelist>
    </filter>
    <logging>
        <log type="coverage-html" target="./log/report.html" charset="UTF-8"
            yui="true" highlight="true"
            lowUpperBound="50" highLowerBound="80"/>
        <log type="testdox-html" target="./log/testdox.html" />
    </logging>
 </phpunit>

Должен ли я пойти со многими из них? Или я должен добавить тег и объединить все настройки файлов в одну конфигурацию XML.

Если лучшая практика - «единая конфигурация» ... кто-нибудь знает, как вы включаете несколько «начальных загрузок»? Поскольку каждое приложение загружается с немного разными глобальными переменными, а некоторые загружают немного разные версии классов с одинаковыми именами, необходимо будет очистить все и начать заново.

Я заинтересован в создании «оптимальной» системы для тестирования с самого начала, но, очевидно, у меня есть несколько пробелов в моих знаниях.

1 Ответ

5 голосов
/ 08 сентября 2010

Вы в основном почти ответили на свой вопрос.

Возможно, однако, с точки зрения наилучшей практики, лучше иметь несколько файлов XML, по одному для каждого приложения.(Тогда, возможно, пакетный / шеллскрипт файл для запуска «test all» или проверки X

. Это способ пойти дальше, держать все отдельно, проще и меньше головной боли в долгосрочной перспективе.

Кроме того, вы можете обратиться к какому-нибудь решению для непрерывной интеграции, которое поможет в запуске ваших тестовых наборов. Hudson довольно хорош и хорошо интегрируется с PHPUnit.

...