phpunit没有执行测试

时间:2015-06-19 15:43:18

标签: php phpunit

我没有执行任何测试'用phpunit ..

此行有效

$ phpunit install/InstallDbTest.php
...
<result expected>
...

$ cat suites/installtests.xml   
<phpunit>
    <testsuites>
        <testsuite name="database">
            <file>install/InstallDbTest.php</file>
        </testsuite>
    </testsuites>
</phpunit>

$ phpunit -c suites/installtests.xml 
PHPUnit 4.7.4 by Sebastian Bergmann and contributors.



Time: 130 ms, Memory: 11.25Mb

No tests executed!

有谁能告诉我我做错了什么?

提前致谢!

3 个答案:

答案 0 :(得分:6)

您需要更正phpunit.xml中的路径。

它正在尝试查找文件suites/install/InstallDbTest.php。由于该文件不存在,因此不会运行任何测试,您将收到消息。

将配置更改为以下内容:

<phpunit>
    <testsuites>
        <testsuite name="database">
            <file>../install/InstallDbTest.php</file>
        </testsuite>
    </testsuites>
</phpunit>

phpunit.xml中的文件路径都是相对于xml文件的位置。

答案 1 :(得分:0)

可能在您缺少的 InstallDbTest.php 文件中:

<?php
...

答案 2 :(得分:0)

对于那些使用与Composer的自动加载文件不同的 bootstrap 文件的人,请确保没有use一个测试用例类。

确实,PHPUnit(在我的情况下为6.2版)将正在运行的TestSuite所有PHP文件添加到尚未加载类(请参阅如何完成in the code) 。从TestSuite::addTestFile($filename)方法:

$classes = get_declared_classes();
$filename   = Fileloader::checkAndLoad($filename);
$newClasses = \array_diff(\get_declared_classes(), $classes);

因此,如果您的班级已经属于get_declared_classes,则会被忽略。

总结一下:之前不要use您的测试类;)