我有一个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文件中将两个应用程序作为它们自己的测试套件包含进去,但很快就会遇到“无法重新声明类:FooController”的问题。
在我看来,理想的情况是配置XML,使所有测试都运行在app1上,然后清除内存并运行所有测试以针对app2。
然而,按照最佳实践的方式,最好为每个APP拥有多个XML文件。 (然后可能需要一个批处理/ shell脚本文件来运行“测试全部”或测试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配置文件?
如果最佳实践是“单一配置”……是否有人知道如何启用多个“引导程序”?由于每个应用程序加载的全局变量略有不同,并且某些应用程序将加载同名类的略有不同版本,因此有必要清除所有内容并重新开始。
我对从一开始构建“最佳”测试系统很感兴趣,但显然我的知识还有一些空白。