上篇日記中我介紹了phpunit的配置方法,今天就開始介紹如何用PHPUnit來編寫測試用例,下面我來引入一個測試PHP數組操做的測試用例,這個例子會給你展現PHPUnit常規的用法和測試用例編寫的步驟。當前目標主要是對PHPUnit的基本使用有一個大概的瞭解,相似開發程序教程中的Hello World程序,知道程序怎麼寫,怎麼去運行。php
編寫一個棧測試的例子的步驟:數組
1. 定義一個測試類StackTest保存於StackTest.php中函數
2. 這個類繼承於PHPUnit_Framework_TestCase單元測試
3. 定義類中的測試方法,類的全部的測試用例方法須要用test開頭,固然,你也能夠在使用@test註釋來定義一個名字不爲test開頭的方法爲測試方法測試
4. 在這些測試方法中,咱們須要使用斷言方法(assertion methods)如assertEquals()來斷言實際傳入的參數和期待的參數的值相同來達到測試的目的.spa
下面咱們來看代碼:命令行
例子代碼中我使用斷言方法assertEquals來斷言我期待$stack相關的值3d
注意代碼中高亮的方法indexEquals,它並無使用test開頭,可是我在註釋中增長了@test標籤,那麼phpunit依然會將其做爲一個測試方法運行,下面咱們來運行方法和運行結果繼承
進入命令行,使用phpunit StackTest來執行StackTest.php的測試,運行結果以下:教程
.F 表示執行完畢且出現斷言失敗
Time: 0 seconds, Memory: 5.50Mb
表示執行時間爲0秒,使用5.50MB內存
There was 1 failure:
這裏有一個失敗
1) StackTest::indexEuqals
StackTest類的indexEquals方法
Failed asserting that <integer:1> matches expected <integer:2>.
斷言值爲2可是傳入的值倒是1
/home/colt/workspace/PHP/test/StackTest.php:28
FAILURES!
Tests: 2, Assertions: 6, Failures: 1.
執行了2個測試,共6個斷言,失敗1
因爲咱們在indexEquals斷言$stack索引0的值爲2,可是實際上值的是1,因此這個斷言沒有經過測試並向咱們報告了失敗。
本例子經過一個簡單易懂的測試類解開測試的神祕面紗:
通俗的講,單元測試就是在測試用例類中,定義一系列的測試方法,在方法中使用斷言(assert)來測試你程序中的相關函數、類、接口、過程的執行結果是否和你預期的是同樣的,若是某個部分的執行結果沒有與你期待的結果相同,PHPUnit就會向你報告問題,你也能夠方便的根據報告確認和修復程序中的Bug。針對你的程序寫好詳細的完整單元測試,你就不用每次完成一個新功能後逐個的測試你軟件的全部功能,並且在程序發佈以前,你至少能夠經過測試消滅大部分的內部邏輯Bug和缺陷。一樣,你在以後的維護開發中,若是在某個功能的修改中不當心改壞了與其相關連的其餘模塊,那麼先前完善的單元測試也會向你報告出相關的問題讓你及時發現和修復問題。
本篇筆記完結,下篇我將繼續介紹使用PHPUnit編寫測試用例的進階知識.