PHPUnit:多个引导文件或XML文件?

8

我有一个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配置文件?
如果最佳实践是“单一配置”……是否有人知道如何启用多个“引导程序”?由于每个应用程序加载的全局变量略有不同,并且某些应用程序将加载同名类的略有不同版本,因此有必要清除所有内容并重新开始。
我对从一开始构建“最佳”测试系统很感兴趣,但显然我的知识还有一些空白。
1个回答

5

其实你已经几乎回答了自己的问题。

然而,按照最佳实践,最好为每个APP使用多个XML文件。(然后可能需要一个批处理/Shell脚本文件来运行“全部测试”或测试X)

这是正确的方法,保持每个部分单独,简单并且在长期运行中不会出现太多麻烦和问题。

此外,您可能需要了解一些持续集成解决方案以帮助运行测试套件,Hudson非常好,并且与PHPUnit集成良好。


遗憾的是,我认为只要在phpunit组上进行最少的开发,就可以轻松解决这个问题... - inf3rno

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接