PHP 致命错误:找不到类 - PHPUnit
Posted
技术标签:
【中文标题】PHP 致命错误:找不到类 - PHPUnit【英文标题】:PHP Fatal error: Class not found - PHPUnit 【发布时间】:2022-01-02 07:37:21 【问题描述】:我正在尝试在 php 项目中使用 PHPUnit。 这是我的项目结构(文件为斜体)
控制器
Pages.php测试
pagesTest.php供应商
斌 phpunit.batcomposer.json
我的文件:
composer.json
"require-dev":
"phpunit/phpunit":"5.5.4"
Pages.php
<?php
namespace controllers
class Pages
public function render()
return 'Hello World';
pagesTest.php
<?php
class PagesTest extends PHPUnit_Framework_TestCase
public function testRenderReturnsHelloWorld()
$pages = new \controllers\Pages();
$expected = 'Hello Word';
$this->assertEquals($expected, $pages->render());
当我打开命令行时,我会写:
C:\xampp\htdocs\PHPUnitTestProject\vendor\bin>phpunit ../../tests/PagesTest.php
我收到此错误消息:PHP Fatal error: Class 'controllers\Pages' not found in C:\xampp\htdocs\PHPUnitTestProject\tests\pagesTest.php on line 7
这是一个路径问题。我认为这是因为它搜索不存在的C:\xampp\htdocs\PHPUnitTestProject\vendor\bin\controllers\Pages()
。
应该是C:\xampp\htdocs\PHPUnitTestProject\controllers\Pages()
【问题讨论】:
这是题外话,但请务必使用符合 PSR-4 standard 的文件名。PageTest.php
而不是 pageTest.php
。
【参考方案1】:
你需要指向被测试的类,所以在 pagesTest.php 中添加一个 require:
require __DIR__ . "/../controllers/Pages.php";
或者如果你正在使用自动加载,那么你可以在你的命令行中bootstrap the autoload
phpunit --bootstrap src/autoload.php
或者你可以像这个例子一样设置一个phpunit.xml配置文件(来自我上面链接的PHPUnit页面):
<phpunit bootstrap="src/autoload.php">
<testsuites>
<testsuite name="money">
<directory>tests</directory>
</testsuite>
</testsuites>
</phpunit>
然后将其与 --configuration 选项一起使用。
【讨论】:
如果我完成了上述所有操作但仍然出现该错误怎么办? @AntonyD'Andrea 一些额外的尝试...对于要求,这可能是路径问题,回显__DIR__
。确保它是你所想的路径,如果你使用 Composer,你可以运行composer dumpautoload
,或者如果它看起来卡住了,你可以删除供应商文件并运行composer update
作为绝望的措施,但是这也将更新依赖项。祝你好运!
谢谢,原来这与 PHPUnit 6.0 有关,我在 5.7 上运行(我正在使用其他人的库)【参考方案2】:
在 phpunit.xml.dist 中添加 bootstrap="vendor/autoload.php"
为我解决了这个问题。
<?xml version="1.0" encoding="UTF-8"?>
<phpunit bootstrap="vendor/autoload.php"> <!-- in here -->
<php>
<!-- ... -->
</php>
<testsuites>
<!-- ... -->
</testsuites>
</phpunit>
【讨论】:
【参考方案3】:试试composer dump-autoload -o
命令
【讨论】:
【参考方案4】:从根文件夹调用phpunit
:
$ cd C:\xampp\htdocs\PHPUnitTestProject\
$ vendor\bin\phpunit tests/PagesTest.php
【讨论】:
以上是关于PHP 致命错误:找不到类 - PHPUnit的主要内容,如果未能解决你的问题,请参考以下文章
PHPUnit CodeIgniter 生成夹具 PHP 致命错误:找不到类“PHPUnit_Framework_TestCase”
为啥,致命错误:在...中找不到类“PHPUnit_Framework_TestCase”?