phpunit 找不到类,PHP 致命错误

Posted

技术标签:

【中文标题】phpunit 找不到类,PHP 致命错误【英文标题】:phpunit cannot find Class, PHP Fatal error 【发布时间】:2013-09-27 08:38:12 【问题描述】:

    我得到了 phpunit 并将其安装为this link,使用最简单的方法进行测试。

    我只是下载了 phpunit.phar 文件,chmod & rename & move to /usr/local/bin 然后,我运行 phpunit --version,就可以了。

    PHPUnit 3.7.27 by Sebastian Bergmann

    我写了一个简单的测试

    public function testSomething()
    
       $this -> assertTrue(true) 
    
    

    然后我进入源文件夹phpunit --colors Test

    它有效。所以,我决定写一个复杂的演示。

    我的项目文件夹结构是这样的。

    Project Name
       --> app
           --> api
           --> tests
    

    现在我在app/api/FlyApi.php写一个简单的类

    <?php
    
     class FlyApi 
    
         public function makeFly()
            //do something else
         
     
    

    然后我为 FlyApi.php 编写另一个测试类

    <?php
    
     class FlyApiTest extends PHPUnit_Framework_TestCase 
    
         public function testFly()
            //new a FlyApi
            $flyApi = new FlyApi();
    
            //do something
         
     
    

    在这一行 $flyApi = new FlyApi() 我得到了错误。

    PHP 致命错误:在第 23 行的 /home/kevin/Workspace/fly/app/api/FlyApi.php 中找不到类“FlyApi”

    是的,这条线$flyApi = new FlyApi()

【问题讨论】:

从技术上讲,您只是缺少需要 FlyApi 的类定义,因为 PHPUnit 不会为您做一些神奇的自动加载。在测试之前提供被测单元是你的工作(或者如果该类还不存在:测试失败并导致 Phpunit 崩溃是完全可以的,因为测试是在 TDD 中的代码之前编写的)。跨度> 【参考方案1】:

尝试将您的 /api/ 文件夹添加到您的 ClassLoader app\start\global.php

你会发现这个部分:

ClassLoader::addDirectories(array(

    app_path().'/commands',
    app_path().'/controllers',
    ...
    app_path().'/api/
));

【讨论】:

【参考方案2】:

你在使用 Laravel 的 phpunit.xml 文件吗?它包含 Laravel(和 Composer)的 autoload.php 文件,可让您在其中使用所有自动加载的类。

最后,整个错误是什么?它应该(希望)告诉您它正在尝试加载哪个类(如果命名空间错误或其他原因,它将为您提供线索)。

【讨论】:

【参考方案3】:

您没有加载FlyApi 类的定义。

这个解决方案是 Laravel 特有的:

您应该扩展 TestCase 而不是 PHPUnit_Framework_TestCase

【讨论】:

以上是关于phpunit 找不到类,PHP 致命错误的主要内容,如果未能解决你的问题,请参考以下文章

PHPUnit CodeIgniter 生成夹具 PHP 致命错误:找不到类“PHPUnit_Framework_TestCase”

为啥,致命错误:在...中找不到类“PHPUnit_Framework_TestCase”?

Composer 自动加载器在运行测试时找不到 PHPUnit

“PHP 致命错误:找不到类 'HttpRequest'”

PHP致命错误:找不到类

PHP致命错误:未捕获错误:找不到类