2013-09-22 146 views
0
  1. 我得到的phpunit并安装它为this link使用最简单的方式进行测试。phpunit找不到类,PHP致命错误

    我刚下载phpunit.phar文件,chmod & rename &移动到/ usr/local/bin然后,我运行phpunit --version,它就ok了。

    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致命错误:类 'FlyApi' 在/home/kevin/Workspace/fly/app/api/FlyApi.php未发现线路23

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

+0

从技术上讲,你只是想要'FlyApi'的类定义,因为PHPUnit不会为你做一些神奇的自动加载。在测试之前提供被测试的单元是您的工作(或者如果该类尚不存在:测试失败并伴随Phpunit崩溃是完全可以的,因为测试已经在TDD之前的代码之前编写过)。 – hakre

回答

1

您没有加载您的FlyApi类的定义。

该解决方案是Laravel具体:

你应该延长TestCase而非PHPUnit_Framework_TestCase

1

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

你会发现本节:

ClassLoader::addDirectories(array(

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

是的,我已经添加了,但仍然有错误。 – diligent

1

您是否使用Laravel的phpunit.xml文件?它包括Laravel的(和作曲家的)autoload.php文件,它可以让你使用它里面的所有自动加载类。

最后,什么是整个错误?它应该(希望)告诉你它正在尝试加载哪个类(如果命名空间是错误的,它会给你提供线索)。

相关问题