文章目的
此文章總結本人在Linux系統上手動配置PHPUnit的過程,現在將此過程總結歸納作為個人的備忘錄,同時也希望給那些被迫需要手動配置PHPUnit的同學提供幫助。
PHPUnit官方提供簡潔的Pear在線安裝,但是由於公司內部網絡原因,無法使用,不得不使用手動配置。手動配置雖然麻煩,但是在整個配置過程中,可以了解PHPUnit的目錄結構,對於以后深入的學習和使用PHPUnit不無益處。
如何配置
配置開始前,首先設置一些符號
- $PHP_HOME PHP安裝目錄
- $PHPUNIT_HOME PHPUnit安裝目錄
配置過程如下:
1. 下載phpunit源代碼,目前最新版本為3.5,但是不太穩定,建議使用穩定的3.4版本,下載地址:http://pear.phpunit.de/
2. 解壓PHPUnit到機器任意目錄,個人建議解壓到$PHP_HOME/lib目錄下,這樣便於管理所有的第三方php庫。假設已經解壓后的$PHPUNIT_HOME設為$PHP_HOME/lib/PHPUnit-3.4.10。
3. 修改$PHPUNIT_HOME /phpunit.php文件,如下所示:
修改前 |
修改后 |
上面的代碼中,被修改的地方由紅色高亮顯示,修改內容主要是去除了if判斷語句,直接執行if內部的語句,具體原因見下節分析。
4. 將$PHPUNIT_HOME/ phpunit.php文件名稱修改為$PHPUNIT_HOME/ phpunit。
5. 設置環境變量PATH,將目錄$PHPUNIT_HOME/添加到PATH中。比如,可以修改~/.bashrc文件,然后source ~/.bashrc使修改生效,修改后的~/.bashrc文件如下:
配置完成,是不是很簡單!
驗證PHPUnit
配置PHPUnit后,可以在任意目錄下輸入phpunit命令,如下所示:
出現了上面的提示,說明你的phpunit就配置好了,接下來,可以通過一段示例代碼,體驗phpunit的功能。StackTest.php如下所示:
<?php class StackTest extends PHPUnit_Framework_TestCase { public function testPushAndPop() { $stack = array(); $this->assertEquals(0, count($stack)); array_push($stack, 'foo'); $this->assertEquals('foo', $stack[count($stack)-1]); $this->assertEquals(1, count($stack)); $this->assertEquals('foo', array_pop($stack)); $this->assertEquals(0, count($stack)); } } ?> |
保存好StackTest.php后,在命令行輸入phpunit StackTest.php,就可以運行phpunit,進行單元測試,如下所示:
這樣,你的第一個PHPUnit單元測試就執行成功了,該測試用的5個斷言全部通過。
配置分析
這里需要分析一下配置過程中的第3步——修改phpunit代碼。此處將if出去,直接執行if內部的語句“set_include_path(dirname(__FILE__) . PATH_SEPARATOR . get_include_path());”,此段代碼是將$PHPUNIT_HOME目錄臨時添加到php.ini文件中的“include_path”字段的值中,這樣php程序就可以查找到所有phpunit相關的文件。如果不執行第3步的修改,if語句中的條件有可能為false,導致沒有設置php.ini的include_path,那么執行phpunit時,php無法找到其他相關文件,就會報告類似“require_once無法找到文件…”的錯誤。
配置過程的第4,5步是為了使得linux系統可以識別phpunit命令,這樣就可以在linux的任意目錄下執行phpunit命令。
總結
雖然php配置只有幾步,但是對於我這個php菜鳥來說還是費了一些功夫的。不過現在清楚了配置過的原理,這些時間還是值得的。
參考文獻