我的phpunit.xml文件中有这个:
<phpunit ...>
<testsuites>
<testsuite name="MyTests">
<directory>../path/to/some/tests</directory>
</testsuite>
</testsuites>
... // more settings for <filter> and <logging>
</phpunit>
当我去运行它时,我收到了这个错误:
PHP fatal error: Uncaught exception 'PHPUnit_Framework_Exception'
with message 'Neither "MyTests.php" nor "MyTests.php" could be opened.'
为什么PHPUnit会给我这个错误,如果我给它一个查找测试的目录,它为什么要查找“MyTests.php”?
在相关的说明中,当我在其他测试中添加更多<testsuite>
个条目时,PHPUnit运行时没有错误。怎么了?
答案 0 :(得分:5)
默认情况下,PHPUnit将添加“*Test
个文件中找到的所有*Test.php
个类”(请参阅PHPUnit docs)。如果找不到与该描述匹配的任何文件(例如,定义SomeTest.php
类的SomeTest
文件),则它将回退到基于测试套件的name属性查找文件。 / p>
解决方案是创建一个与该描述匹配的文件,以便PHPUnit不会回退到testuite名称的默认搜索范围:
<?php
// in ../path/to/some/tests/SomeTest.php:
class SomeTest extends PHPUnit_Framework_TestCase {
public function test() {
//... test cases here
}
}
?>
现在您应该可以无错误地运行phpunit
:
$ phpunit
PHPUnit 3.5.14 by Sebastian Bergmann.
.
Time: 0 seconds, Memory: 10.75Mb
OK (1 test, 0 assertions)
如果PHPUnit能够找到在其他套件下运行的匹配测试用例,那么当您添加更多testsuite
条目时,它将正常工作。如果它找到要在任何测试套件中运行的测试,它将不会求助于name
属性搜索它找不到任何东西的套件。
答案 1 :(得分:1)
我认为问题在于您没有告诉它哪些文件包含您要运行的测试用例和/或套件。尝试添加suffix="Test.php"
属性。
<testsuite name="MyTests">
<directory suffix="Test.php">../path/to/some/tests</directory>
</testsuite>