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

  • Controller
  • Pages.php
  • 测试
  • pagesTest.php
  • 供应商
  • bin
  • 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()

    最佳答案

    您需要指向已测试的类,因此在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选项一起使用。

    关于php - PHP致命错误: Class not found - PHPUnit,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/39454285/

    10-11 20:29