为什么PHPUnit不接受XML定义的测试套件?

时间:2011-09-04 22:38:28

标签: php zend-framework phpunit

我正在跟随ZendCast继续在Zend Framework上编写单元测试。在视频和其他一些来源之间,我的phpunit.xml如下所示:

<?xml version="1.0" encoding="UTF-8"?>
<phpunit bootstrap="./application/bootstrap.php" colors="true">

    <testsuites>
        <testsuite name="RefreshTests">
            <directory>./</directory>
        </testsuite>
    </testsuites>

    <filter>
        <whitelist>
            <directory suffix=".php">../application</directory>
        </whitelist>
        <exclude></exclude>
    </filter>

    <logging>
        <log type="coverage-html" target="./log/report" charset="UTF-8"
        yui="true" highlight="true" lowUpperBound="50" highLowerBound="80" />
        <log type="testdox" target="./log/testdox.html" />
    </logging>

</phpunit>

不幸的是,当我尝试使用此文件运行PHPUnit时,虽然我可以验证“boostrap.php”文件是否运行,但是我在运行时遇到此错误:

  

PHPUnit_Framework_Exception:既不能打开“RefreshTests.php”也不能打开“RefreshTests.php”。在第102行的C:\ Program Files(x86)\ php \ pear \ PHPUnit \ Util \ Skeleton \ Test.php

这似乎表明PHPUnit正在寻找一个基于我命名的测试套件的文件,以便找到要运行的测试,而不是尊重我希望它在整个目录上运行。尽管PHPUnit's documentation quite explicitly says that defining a test suite this way is allowed.

我做错了什么?

1 个答案:

答案 0 :(得分:3)

错误意味着phpunit在递归扫描时无法在"."目录中找到任何测试类。

如果找不到任何测试文件,则尝试打开名为testsuite的.php文件。因此错误。

确保您的TestClasses以Test.php结尾或向suffix=".php"标记添加<directory>(或其他内容),并确保该文件包含一个也以{{1}结尾的类}。