gpt4 book ai didi

php - 为什么在通过 PhpUnit 运行测试时找不到我的自定义 TestCase 类?

转载 作者:行者123 更新时间:2023-12-04 14:51:59 24 4
gpt4 key购买 nike

我将 PHPUnit 添加到我的 Symfony 项目中,如 documentation 中所述。 .创建并运行第一个扩展 Symfony\Bundle\FrameworkBundle\Test\WebTestCase 的测试没问题。
现在我想创建一个自定义 WebTestCase为其他测试类提供通用功能的子类:

// .../projectDir/tests/BaseTestCase.php
namespace My\Project\Tests;

use Symfony\Bundle\FrameworkBundle\Test\WebTestCase;

class BaseTestCase extends WebTestCase {
protected function doSomething() {}
}


// .../projectDir/tests/SomeTest.php
namespace My\Project\Tests;

use My\Project\Tests\BaseTestCase;

class SomeTest extends BaseTestCase {
protected function testSomething() {
$this->doSomething();
...
}
}

运行时 php bin/phpunit我收到“找不到类”错误:
$ php bin/phpunit
PHP Fatal error: Uncaught Error: Class 'My\Project\Tests\BaseTestCase' not found in /path/to/projectDir/tests/SomeTest.php:6
Stack trace:
#0 /path/to/projectDir/vendor/phpunit/phpunit/src/Util/FileLoader.php(65): include_once()
#1 /path/to/projectDir/vendor/phpunit/phpunit/src/Util/FileLoader.php(49): PHPUnit\Util\FileLoader::load('/path/to/...')
#2 /path/to/projectDir/vendor/phpunit/phpunit/src/Framework/TestSuite.php(402): PHPUnit\Util\FileLoader::checkAndLoad('/path/to/...')
#3 /path/to/projectDir/vendor/phpunit/phpunit/src/Framework/TestSuite.php(530): PHPUnit\Framework\TestSuite->addTestFile('/path/to/...')
#4 /path/to/projectDir/vendor/phpunit/phpunit/src/TextUI/TestSuiteMapper.php(67): PHPUnit\Framework\TestSuite->addTestFiles(Array)
#5 /path/to/proje in /kunden/100170_47877/webpages/pockey/webpage/dev/vendor/phpunit/phpunit/src/TextUI/Command.php on line 98
我已经仔细检查了类名、命名空间和 use语句(这不是必需的,因为两个类都在同一个文件夹/命名空间中)。
我需要注册吗 BaseTestCasePHPUnit以某种方式成为我测试的有效父类(super class)?

最佳答案

您似乎缺少测试目录的类路径声明。
通常,对于测试类本身来说是没有必要的,因为 PhpUnit 将加载测试文件并直接读取类。但是任何测试中引用的任何其他类都需要通过自动加载器。如果您还没有声明在哪里可以找到 Test命名空间,它将尝试使用您的常规项目文件(例如在 src/ 中)找到它。
添加 autoload-dev您的 key composer.json .例如,这样的事情:

{
"autoload": {
"psr-4": {
"My\\Project\\": "src/"
}
},
"autoload-dev": {
"psr-4": {
"My\\Project\\Tests\\": "tests/"
}
}
}
在此之后转储自动加载程序( composer dump-autload ),然后再次尝试运行您的测试。

关于php - 为什么在通过 PhpUnit 运行测试时找不到我的自定义 TestCase 类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68921612/

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