【问题标题】:PHPUnit: Multiple Bootstraps or XML files?PHPUnit:多个引导程序或 XML 文件?
【发布时间】: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


    【解决方案1】:

    你基本上已经回答了你自己的问题。

    然而,情况可能是,在 就最佳实践而言,最好 有多个 XML 文件,每个文件一个 应用程序。 (然后可能是批处理/shellscript 文件以运行“测试全部”或测试 X

    这是要走的路,从长远来看,将所有内容分开,更简单,更少麻烦。

    另外,您可能想研究一些持续集成解决方案来帮助运行您的测试套件,Hudson 相当不错,并且与 PHPUnit 集成得很好。

    【讨论】:

    • 可悲的是:S 我认为在 phpunit 组的开发最少的情况下,这个问题可以很容易地解决......
    猜你喜欢
    • 2017-09-08
    • 2013-01-23
    • 1970-01-01
    • 2010-12-25
    • 1970-01-01
    • 1970-01-01
    • 2011-09-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多