0

我正在拼命地尝试使用 Zend Framework 1.11 使 PHPUnit 工作。在我的 phpunit.xml 中,我需要确定它指向的位置。

<phpunit bootstrap="./bootstrap.php" colors="false">
    <testsuite name="ApplicationTestSuite">
        <directory>./application</directory>
        <directory>./library/</directory>
    </testsuite>
    <filter>
        <whitelist>
            <directory suffix=".php">../application</directory>
            <directory suffix=".php">../library/</directory>
            <exclude>
                <directory suffix=".phtml">../applications/views</directory>
                <file>../applications/Bootstrap.php</file>
            </exclude>
        </whitelist>
    </filter>
    <logging>
        <log type="coverage-html" target="./log/coverage" charset="UTF-8"
             yui="true" highlight="false" lowUpperBound="35" highLowerBound="70"/>
    </logging>
</phpunit>

这一切:

./Application
 ./library
 ../application/Bootstrap.php

指向测试目录而不是应用程序目录,对吗?

因为我总是有一个致命错误:require_once:打开所需的controllerTestCase.php失败...

在此先感谢您的帮助

4

1 回答 1

0

首先,您可以拥有不同Bootstrap.php的文件——一个用于正常运行应用程序,一个用于测试它。在目录级别创建一个tests目录。您将驻留在该新目录中。这就是目录内部的样子: Applicationphpunit.xmltests

./Application/
./Application/Bootstrap.php
./Application/ExampleControllerTestCase.php
./log/
./phpunit.xml

还有你的 phpunit.xml:

<?xml version="1.0" encoding="UTF-8"?>
<phpunit bootstrap="./Application/Bootstrap.php" colors="true">
    <testsuite name="ExampleTests">
        <directory>./Application</directory>
    </testsuite>

    <filter>
        <whitelist>
            <directory suffix=".php">../Application/</directory>
            <exclude>
                <directory suffix=".phtml">../Application/</directory>
                <file>../Application/Bootstrap.php</file>
            </exclude>
        </whitelist>
    </filter>

    <logging>
        <log type="coverage-html" target="log/" charset="UTF-8" yui="true" hightlight="true" lowupperbound="50" highlowerbound="80">
        <log type="testdox" target="log/">
    </log></log></logging>
</phpunit>

请注意:

  1. <phpunit bootstrap="./application/Bootstrap.php" colors="true">指向目录中的Bootstrap.php文件tests/Application/

  2. “列入白名单”的应用程序目录是上层的目录——即与tests目录位于同一位置。

  3. .phtml文件和“运行时”Bootstrap.php被排除在外。

您还应该有一个测试数据库,因为某些测试需要删除/插入/更新数据。在您的情况下,“testsuite”标签确实指向该目录tests,前提phpunit.xml是该目录位于该目录中。

于 2013-05-28T09:47:30.413 回答