У меня есть 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.
Если лучшая практика - «единая конфигурация» ... кто-нибудь знает, как вы включаете несколько «начальных загрузок»? Поскольку каждое приложение загружается с немного разными глобальными переменными, а некоторые загружают немного разные версии классов с одинаковыми именами, необходимо будет очистить все и начать заново.
Я заинтересован в создании «оптимальной» системы для тестирования с самого начала, но, очевидно, у меня есть несколько пробелов в моих знаниях.