一、PHPUnit是什么?
1、它是一款輕量級的PHP測試框架,地址:http://www.phpunit.cn
2、手冊:http://www.phpunit.cn/manual/5.7/zh_cn/installation.html
二、為什么要用PHPUnit?
1、可以通過命令操控測試腳本
2、可以測試性能
3、可以測試代碼覆蓋率
4、可以自動化的更新測試用例的參數數據
5、各種格式的日志
三、PHPUnit使用規則
1、 一般被測試類的后面加上”Test”,比如要測試的類為Array,則測試用例的命名為ArrayTest。
2、測試類ArrayTest繼承於PHPUnit_Framework_TestCase
3、測試方法必須為public權限,都是test開頭,或者你也可以選擇給其加注釋@test來表明該函數為測試函數
4、通過斷言方法來對實際值和預期值進行斷言,斷言方法可以參照手冊:http://www.phpunit.cn/manual/5.7/zh_cn/appendixes.assertions.html
快速入門:
| class ArrayTest extends PHPUnit_Framework_TestCase //測試用例運行后執行 // 斷言數組$fixture中元素的數目是0。 } |
命令行啟動測試用例:
phpunit 測試文件名,此處為要測試ArrayTest.php文件
| phpunit ArrayTest.php PHPUnit 5.7.5 by Sebastian Bergmann and contributors. .. 2 / 2 (100%) Time: 138 ms, Memory: 3.25MB OK (2 tests, 4 assertions) |
記錄測試日志:
日志多種格式:http://www.phpunit.cn/manual/5.7/zh_cn/textui.html#textui.clioptions
| phpunit ArrayTest.php --log-tap log.txt TAP version 13 |
四、PHPUnit測試代碼覆蓋率
可以參考:http://www.phpunit.cn/manual/current/zh_cn/code-coverage-analysis.html
可以通過配置phpunit.xml設置需要測試的代碼路徑或文件
例如:phpunit.xml的配置(放在項目根目錄)

1、通過生成html頁面查看代碼覆蓋率
通過執行命令:phpunit --coverage-html ./coverage ./src/test
命令解釋:
- --coverage-html:生成覆蓋率結果的html
- coverage:html生成目錄,可以重新定義
- ./src/test:測試用例目錄(也可以是單個測試用例文件)
覆蓋率結果:

可以看到目錄里每個文件的覆蓋率:

還可以清晰的看到每一個文件代碼覆蓋率:

2、通過生成的text文件查看代碼覆蓋率
通過執行命令:phpunit --coverage-text ./src/test > test.log
命令解釋:
- --coverage-html:生成覆蓋率結果的text
- ./src/test:測試用例目錄(也可以是單個測試用例文件)
- > test.log:存放覆蓋率結果的文件(文件名稱自己定義)
覆蓋率結果:

可以清晰的看到總覆蓋率和每個文件的覆蓋率。
覆蓋率計算問題:
1、類:只有類中所有代碼都執行了,覆蓋率才為100%;
2、方法:類中的方法每一行都執行了,覆蓋率才算100%。例如:類中有5個方法,有兩個方法每一行執行了,覆蓋率為:40%;
3、行:每一行代碼都執行了就是100%;
