fbpx

Cent OS 5.5 安裝 PHP 5.3 + PHPUnit 3.4 (教學備忘筆記)

PHPUnit 介紹

PHPUnit 是目前在 PHP Programming 中最主流的測試框架,包括 Zend Framework 所使用的 Zend_Test 的底層也是交由 PHPUnit 來完成。為什麼需要測試框架呢?主要的原因為強化系統設計品質,然而將測試工作自動化是很重要的,在持續整合 (CI, Continuous Integration) 的範疇中也提到自動化測試的重要。我認為這些單元測試的框架與工具,都是測試驅動開發 (TDD, Test-Driven Development) 所帶來的產物,單元測試也引導我們程式設計師將程式撰寫為鬆偶合(依賴性低)的優異程式碼。藉由單元測試的進行,無形中能夠提升軟體品質,這也是單元測試 的最大目的。

安裝 PHPUnit

PHPUnit 官方網站如下:
http://www.phpunit.de/

官方有提供完整的安裝手冊如下:
http://www.phpunit.de/manual/3.4/en/installation.html

手冊上聲明 PHPUnit 3.4 需要 PHP 5.3.3 以上的版本,我想可能也用到了 PHP Namespace 這項功能吧(只是猜測)。

PHPUnit 3.4 requires PHP 5.1.4 (or later) but PHP 5.3.3 (or later) is highly recommended.

很遺憾的,Cent OS 5.5 提供的 PHP 版本為 5.1.x,所以我只好先升級 PHP 囉。步驟僅需執行以下指令(機器需可以連上網路喔):

先移除舊版 5.1.x

[root$cent ~]# yum remove php

新增 Repository 與 yum 安裝

[root$cent ~]# rpm -ivh http://repo.webtatic.com/yum/centos/5/`uname -i`/webtatic-release-5-1.noarch.rpm
[root$cent ~]# yum --enablerepo=webtatic install php

完成以後就可以安裝 PHPUnit 囉,我們依照官方文件先安裝 PEAR,安裝方法實在太太簡單了,如下:

[root$cent ~]# yum install php-pear

安裝完後請輸入以下指令繼續安裝 PHPUnit:

[root$cent ~]# pear channel-discover pear.phpunit.de
[root$cent ~]# pear channel-discover pear.symfony-project.com
[root$cent ~]# pear install phpunit/PHPUnit

這樣安裝完成了,PHPUnit 預設會被裝在 /usr/local/lib/php/PHPUnit 這裡,安裝過程如下:

快樂撰寫第一支 Test Case

建立 /tmp/StackTest.php 檔案,內容如下:

<?php
require_once '/usr/local/lib/php/PHPUnit/Framework.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));

    }

}
?>

 執行 phpunit StackTest.php 來進行測試,畫面如下:

整的過程蠻容易的,下一個階段來進行 CI 與整合 Nightly Build,體驗一下自動化測試的優點。

參考資料

  2 comments for “Cent OS 5.5 安裝 PHP 5.3 + PHPUnit 3.4 (教學備忘筆記)

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *

這個網站採用 Akismet 服務減少垃圾留言。進一步了解 Akismet 如何處理網站訪客的留言資料