在 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。
恭喜你!開始進行測試吧!
留言
張貼留言