phpunit找不到Class,PHP致命错误

时间:2013-09-22 09:49:20

标签: laravel phpunit laravel-4 classnotfoundexception

  1. 我使用最简单的测试方法获取phpunit并将其安装为this link

    我只需下载phpunit.phar文件,chmod&重命名&移动到/ usr / local / bin然后,我运行phpunit --version,它确定。

    PHPUnit 3.7.27 by Sebastian Bergmann

  2. 我写了一个简单的测试

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

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

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

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

    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()

3 个答案:

答案 0 :(得分:1)

尝试将您的/api/文件夹添加到ClassLoader的{​​{1}}。

你会发现这个部分:

app\start\global.php

答案 1 :(得分:1)

您使用的是Laravel的phpunit.xml文件吗?它包括Laravel(和Composer)的autoload.php文件,它允许您使用其中的所有自动加载的类。

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

答案 2 :(得分:1)

您未加载FlyApi类的定义。

此解决方案特定于Laravel:

您应该延长TestCase而不是PHPUnit_Framework_TestCase