PHPUnit學習01---Linux配置PHPUnit


文章目的

此文章總結本人在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文件,如下所示:

#!/usr/bin/env php

<?php

/*

* 此處省去注釋~~~~

*/

if (extension_loaded('xdebug')) {

ini_set('xdebug.show_exception_trace', 0);

}

if (strpos('@php_bin@', '@php_bin') === 0) {

set_include_path(dirname(__FILE__) . PATH_SEPARATOR . get_include_path());

}

require_once 'PHPUnit/Util/Filter.php';

PHPUnit_Util_Filter::addFileToFilter(__FILE__, 'PHPUNIT');

require 'PHPUnit/TextUI/Command.php';

define('PHPUnit_MAIN_METHOD', 'PHPUnit_TextUI_Command::main');

PHPUnit_TextUI_Command::main();

?>

修改前

#!/usr/bin/env php

<?php

/*

* 此處省去注釋~~~~

*/

if (extension_loaded('xdebug')) {

ini_set('xdebug.show_exception_trace', 0);

}

set_include_path(dirname(__FILE__) . PATH_SEPARATOR . get_include_path());

require_once 'PHPUnit/Util/Filter.php';

PHPUnit_Util_Filter::addFileToFilter(__FILE__, 'PHPUNIT');

require 'PHPUnit/TextUI/Command.php';

define('PHPUnit_MAIN_METHOD', 'PHPUnit_TextUI_Command::main');

PHPUnit_TextUI_Command::main();

?>

修改后

上面的代碼中,被修改的地方由紅色高亮顯示,修改內容主要是去除了if判斷語句,直接執行if內部的語句,具體原因見下節分析。

4. 將$PHPUNIT_HOME/ phpunit.php文件名稱修改為$PHPUNIT_HOME/ phpunit。

5. 設置環境變量PATH,將目錄$PHPUNIT_HOME/添加到PATH中。比如,可以修改~/.bashrc文件,然后source ~/.bashrc使修改生效,修改后的~/.bashrc文件如下:

clip_image002

配置完成,是不是很簡單!

 

驗證PHPUnit

配置PHPUnit后,可以在任意目錄下輸入phpunit命令,如下所示:

clip_image004

出現了上面的提示,說明你的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,進行單元測試,如下所示:

clip_image006

這樣,你的第一個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菜鳥來說還是費了一些功夫的。不過現在清楚了配置過的原理,這些時間還是值得的。

 

參考文獻


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM