如何使用Travis CI自動測試?
若一個專案由多人共同開發,你可能相依到別人的class,自己在local本機unit test測試通過,並不代表上線之後沒問題,因為很可能別人class的修改導致你的class 執行失敗。
Travis CI與GitHub高度整合,只要你對GitHub push之後,Travis CI就能自動從GitHub抓最新版的code,並執行PHPUnit,最後將測試結果email給你。
Version
Laravel 5.1.22
Travis CI的運作原理
建立.travis.yml
1 | language: php |
在專案根目錄建立.travis.yml
,這是Travis CI設定檔。1 1事實上它如同Homestead.yaml
一樣,是yaml格式檔案。
第1行1
language: php
Travis CI支援很很多程式語言,要特別設定我們想用的PHP。
第3行1
php:
- 5.5
- 5.6
設定PHP所使用的版本,Travis CI允許我們同時測試多個PHP版本。
以Laravel 5.1為例,若使用PHP 5.4測試會失敗,只能測試PHP 5.5以上。
第7行1
install:
- composer install --prefer-dist --no-dev --optimize-autoloader --quiet
在Travis CI執行PHPUnit之前會做的事情。因為現在vendor
目錄並沒有進GitHub,所以必須使用composer install
重建vendor
目錄。2 2這裏composer的寫法遵循聖佑的給PHP開發者的Composer錦囊所建議的寫法,後面再加上–quiet而已,表示不顯示任何訊息。
10行1
notifications:
email:
recipients:
- [email protected]
on_success: always
on_failure: always
Travis CI自動執行PHPUnit之後,可以自動email出testing report,可以在recipients設定成員的email address。
至於何時才寄出email,可自行設定always
、never
與change
。
on_success
預設是change
。
on_failure
預設是always
。
17行1
script: phpunit -c phpunit.xml --coverage-text
設定Travis CI執行phpunit。-C可以指定自己的phpunit.xml設定檔,–coverage-text則設定產生普通文字形式的Coverage報表即可。
將專案push到GitHub
(略)
到Travis CI註冊帳號
公開Repository到https://travis-ci.org,私人Repository到https://travis-ci.com,直接使用GitHub帳號登入即可。
新增欲使用Travis CI的Repository
登入後,在「My Repository」旁的「+」新增欲使用Travis CI的Repository。
將要使用的Repository switch on。
Push到GitHub
之後只要每次對GitHub做push,Travis CI都會自動執行PHPUnit。若要Travis CI重新執行PHPUnit,可以按右上角的「Restart Build」。
收到Travis CI寄的Email
Conclusion
- 由多人一起開發的專案,若擔心改A壞B,傳統只能在testing server
合體
後才能測試,若透過CI (Continuous Integration),只要在每天push到GitHub時,Travis CI就會在背後不斷地持續幫你測試
,提早發現合體
之後所發現的問題,進而提早修正,不過前提是必須要寫測試
,否則CI也幫不了你。
Sample Code
完整的範例可以在我的GitHub上找到。