PHP致命错误:找不到类-PHPUnit

PHP致命错误:找不到类-PHPUnit,php,phpunit,Php,Phpunit,我正在尝试在一个PHP项目中使用。 这是我的项目结构(文件为斜体) 控制器 Pages.php 测验 pagesTest.php 卖主 垃圾箱 蝙蝠 composer.json 我的文件: composer.json { "require-dev": { "phpunit/phpunit":"5.5.4" } } Pages.php <?php namespace controllers class Pages { publi

我正在尝试在一个PHP项目中使用。 这是我的项目结构(文件为斜体)

  • 控制器

    • Pages.php
  • 测验

    • pagesTest.php
  • 卖主

    • 垃圾箱
      • 蝙蝠
  • composer.json

我的文件:

composer.json

{
    "require-dev": {
        "phpunit/phpunit":"5.5.4"
    }
}
Pages.php

<?php
namespace controllers

class Pages
{
    public function render()
    {
        return 'Hello World';
    }

}
<?php

class PagesTest extends PHPUnit_Framework_TestCase
{
    public function testRenderReturnsHelloWorld()
    {
        $pages = new \controllers\Pages();
        $expected = 'Hello Word';
        $this->assertEquals($expected, $pages->render());
    }
}
我收到此错误消息:
PHP致命错误:在第7行的C:\xampp\htdocs\phpunitestproject\tests\pagesTest.PHP中找不到类“controllers\Pages”

这是一个路径问题。我认为这是因为它搜索的
C:\xampp\htdocs\phpunitestproject\vendor\bin\controllers\Pages()
不存在。

它应该是
C:\xampp\htdocs\phpunitestproject\controllers\Pages()
从根文件夹调用
phpunit

$ cd C:\xampp\htdocs\PHPUnitTestProject\
$ vendor\bin\phpunit tests/PagesTest.php

您需要指向测试的类,因此在pagesTest.php中添加require:

require __DIR__ . "/../controllers/Pages.php";
如果使用自动加载,则可以在命令行中

phpunit --bootstrap src/autoload.php
您可以像以下示例一样设置phpunit.xml配置文件(从我上面链接的phpunit页面):


测验
然后与--configuration选项一起使用。

在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>


这是离题的,但请确保使用符合要求的文件名
PageTest.php
而不是
PageTest.php
。如果我已经完成了上述所有操作,但仍然出现了错误,该怎么办?@AntonyD'Andrea需要做一些额外的尝试…根据需要,这可能是路径问题,回显
\uuuuuu DIR\uu
。路径,以确保它是您所认为的,如果您使用Composer,您可以运行
Composer dumpautoload
,或者如果它似乎卡住了,您可以删除供应商文件并运行
Composer update
,作为一种不顾一切的措施,但这也会更新依赖项。祝你好运谢谢,原来这是与PHPUnit 6.0有关的,我在5.7上得到了它(我在其他人的库上工作)
<phpunit bootstrap="src/autoload.php">
  <testsuites>
    <testsuite name="money">
      <directory>tests</directory>
    </testsuite>
  </testsuites>
</phpunit>
<?xml version="1.0" encoding="UTF-8"?>
<phpunit bootstrap="vendor/autoload.php"> <!-- in here -->
    <php>
        <!-- ... -->
    </php>
    <testsuites>
       <!-- ... -->
    </testsuites>
</phpunit>