Ale*_*x C 7 architecture configuration phpunit process
我有一个PHP MVC框架,在该系统下有多个"应用程序"
\project\apps\app1\
\project\apps\app2\
\project\apps\shared\
Run Code Online (Sandbox Code Playgroud)
每个应用程序都可以拥有自己的一组控制器
\project\apps\app1\controllers\FooContoller.php
\project\apps\app2\controllers\FooContoller.php
\project\apps\shared\controllers\BarContoller.php
Run Code Online (Sandbox Code Playgroud)
我想设置我的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
Run Code Online (Sandbox Code Playgroud)
现在问题是:配置我的phpunit.xml文件的"最佳实践"方法是什么?
就目前而言,我试图将这两个应用程序作为自己的测试套件包含在XML文件中,但我很快就遇到了"Can not Redeclare Class:FooController".
在我看来,理想的情况是配置XML,以便为app1运行所有测试,然后"清除"内存,并为app2运行所有测试.
然而,在最佳实践方面,最好有多个XML文件,每个APP一个.(然后可能是批处理/ shellscript文件来运行"全部测试"或测试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>
Run Code Online (Sandbox Code Playgroud)
我应该选择其中的许多吗?或者我应该添加 标记并将所有文件设置组合在一个XML配置中.
如果最佳做法是"单一配置"......有没有人知道如何启用多个"bootstraps"?由于每个APP加载的全局变量略有不同,有些会加载略有不同版本的同名类,因此有必要清除所有内容并重新开始.
我有兴趣从一开始就构建用于测试的"最佳"系统,但显然我知道一些漏洞.
你基本上几乎回答了你自己的问题.
然而,在最佳实践方面,最好有多个XML文件,每个APP一个.(然后可能是批处理/ shellscript文件来运行"全部测试"或测试X.
这是要走的路,从长远来看,保持一切分离,简单,减少头痛.
此外,您可能希望查看一些持续集成解决方案以帮助您运行测试套件,Hudson相当不错并且与PHPUnit很好地集成.