gpt4 book ai didi

php - 为什么 PHPUnit 会尝试查找具有测试套件名称的文件?

转载 作者:可可西里 更新时间:2023-11-01 12:54:41 25 4
gpt4 key购买 nike

我的 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 运行没有错误。这是怎么回事?

最佳答案

默认情况下,PHPUnit 将添加“在*Test.php 文件中找到的所有*Test 类”(参见PHPUnit docs)。如果它没有找到与该描述匹配的任何文件(例如定义 SomeTest 类的 SomeTest.php 文件),它会回退到基于测试套件的名称属性。

解决方案是创建一个与该描述相匹配的文件,这样 PHPUnit 就不会退回到其默认的通过测试套件名称搜索的方式:

<?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 属性来搜索它找不到任何东西的套件。

关于php - 为什么 PHPUnit 会尝试查找具有测试套件名称的文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7045834/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com