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

时间:2016-09-12 15:52:50

标签: php phpunit

我试图在PHP项目中使用PHPUnit。 这是我的项目结构(文件是斜体字体样式)

  • 控制器

    • Pages.php
  • 测试

    • pagesTest.php
  • 供应商

      • phpunit.bat
  • composer.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()

3 个答案:

答案 0 :(得分:14)

您需要指向测试类,因此在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选项。

答案 1 :(得分:1)

从根文件夹中调用phpunit

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

答案 2 :(得分:0)

phpunit.xml.dist 中添加BlobModule为我解决了这个问题。

bootstrap="vendor/autoload.php"