PhpUnit和Ap框架同时使用

    技术2022-05-20  44

    在资质二期项目中,

     

    先举一个简单的phpunit例子

     

     <?php            class testCase extends PHPUnit_Framework_TestCase{            public function testEmpty(){                         $this->assertEquals(0, 0);               }           }

    ?>

     

    运行后可以正常运行。

    再举一个简单的可以直接利用Ap框架访问数据库的例子,

     

    /*****************************************/       3     require_once('start.php');       4       5       6     $testPath = '/home/work/defensor/userchk/api/libs';       7     set_include_path(get_include_path().PATH_SEPARATOR.$testPath);       8       9     require_once('remark.php');      10

     

     

                  $remark = new RemarkApi();      62     $actual = $remark->get(5);      63     echo $actual['status'];      64      65     echo "hello world!";

     

    这个样子运行也是没有错的。

     

     

     

    然而如果将AP框架和PHPUnit同时使用的话,就会出现冲突

    3---10行不变,下面是phpunit的一个类:

     

    class remarkTest extends PHPUnit_Framework_TestCase{      53      54         public function testEmpty(){      55      56             $this->assertEquals(0, 0);      57         }      58     }

     

     

    这样的话,运行就会失败。

    error_log如下所示:

     

    [15-Apr-2011 13:40:58] PHP Warning:  Module 'ap' already loaded in Unknown on line 0 [15-Apr-2011 13:40:58] PHP Fatal error :  Call to private method Ap_Application::__sleep() from context 'PHPUnit_Util_GlobalState' in /home/work/local/php/lib/php/PHPUnit/Util/GlobalState.php on line 114

     

     

    不知道为什么亟待解决。

     

     

    向惠新宸询问:

    在phpunit测试类里面添加如下代码:

    proctected $backupGlobals = false;

     

    问题解决,不知道为啥?我靠 大牛的魅力是无穷的。。。

     

    如果还不能解决,将Ap框架new的时候不要生成全局变量,这样的话phpunit会对其进行序列化,那么就会调用一个函数,就会报错。

    具体序列化神马的,还要再学习。

     


    最新回复(0)