在 Codeigniter 上進行測試

在 Codeigniter 上進行測試

如果想在 CI 上面使用 PHPUnit 進行測試,可以使用 kenjis 提供的 ci-phpunit-test
ci-phpunit-test 讓你在 CI 上面可以很方便就能使用 PHPUnit。
不過使用這個套件之前,有一些必要條件:
  • PHP 版本至少高於 5.4.0
  • CodeIgniter 至少要有 3.0
  • 至少先安裝 PHPUnit 4.3 以上的版本
ci-phpunit-test 的目錄結構:
codeigniter/
├── application/
│   └── tests/
│        ├── _ci_phpunit_test/ ... 不要碰!裡面是 ci-phpunit-test 使用的檔案
│        ├── Bootstrap.php     ... PHPUnit 的 bootstrap 設定檔
│        ├── DbTestCase.php    ... 測試 DB 專用的 class
│        ├── TestCase.php      ... 測試案例專用的 class
│        ├── controllers/      ... 把你的 controller 測試程式放進來
│        ├── libraries/        ... 把你的 library 測試程式放進來
│        ├── mocks/
│        │   └── libraries/    ... mock 模擬資料來源專用的 libraries
│        ├── models/           ... 把你的 model 測試程式放進來
│        └── phpunit.xml       ... PHPUnit 的設定檔
└── vendor/

透過 Composer 進行安裝

到你的專案目錄下使用 composer 進行下載 ci-phpunit-test
$ cd /path/to/codeigniter/
$ composer require kenjis/ci-phpunit-test --dev
下載完成後需要執行一次 install.php
  • 你必須要在專案的根目錄執行安裝指令
  • 安裝指令每次都會建立並覆蓋整個 application/tests 目錄
$ php vendor/kenjis/ci-phpunit-test/install.php
執行完 install.php 後, application 底下就會出現 tests 目錄,
之後的所有測試都必須在 tests 目錄底下執行 phpunit 才能進行測試!
註:可以參照PHP 單元測試(安裝篇)  讓 phpunit 指令可以在任何目錄下執行。

第一次執行 ci-phpunit

接下來可以到 tests 底下執行第一次 phpunit 指令,
但執行後可能會遇見以下畫面:

會出現這個結果,是因為每個人的專案目錄結構可能不大相同,而 ci-phpunit 引入檔案的路徑是參考CI 原生的目錄結構,所以造成引入檔案的時候發生找不到檔案的錯誤,基本上只要追尋錯誤訊息下去做調整就可以解決路徑問題!
以下為我自己有調整的部分:
Change
$system_path = '../../system';

To (這是依照我自己的目錄結構做調整)
$system_path = '../../CodeIgniter31/system';

Change
defined('PACKAGE_PATH') OR define('PACKAGE_PATH', FCPATH . '../package');

To
defined('PACKAGE_PATH') OR define('PACKAGE_PATH', APPPATH . '../package');
調整完成後,再執行一次 phpunit,如果看見以下畫面代表已經可以進行測試了唷!
這畫面跑出來是紅燈(測試結果不通過),是因為 ci-phpunit-test 作者有針對 welcome controller 寫測試範例,不過 welcome controller 早就被我改掉了 :P。
恭喜你!開始進行測試吧!

留言

這個網誌中的熱門文章

Git Commit Message 這樣寫會更好,替專案引入規範與範例

PHP OO 物件導向基礎教學

Gitlab 合併請求 Merge Request 是什麼?