在资质二期项目中,
先举一个简单的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会对其进行序列化,那么就会调用一个函数,就会报错。
具体序列化神马的,还要再学习。