【发布时间】:2010-08-06 21:02:22
【问题描述】:
我有一个 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 运行所有测试强>。
然而,就最佳实践而言,最好有多个 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>
我应该选择其中的许多吗?或者我应该添加 标记并将所有文件设置组合在一个 XML 配置中。
如果最佳做法是“单一配置”……有人知道您如何启用多个“引导程序”吗?由于每个APP加载的全局变量略有不同,有些会加载同名类的版本略有不同,因此需要清除所有内容并重新开始。
我有兴趣从一开始就构建用于测试的“最佳”系统,但显然我的知识存在一些漏洞。
【问题讨论】:
标签: architecture configuration process phpunit