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