單元測試類別¶
單元測試是為應用軟體中每一個函數撰寫測試程式的開發方式。 如果你不熟悉這個概念,可以稍微 google 一下這個主題。
CodeIgniter 的單元測試類別非常簡單,由一個評估函式以及兩個結果函式構成。 它並不打算成為一個完整成熟的測試套件,而只提供了簡單的機制讓你評估你的程式碼, 來確認它是否產生正確的資料型別與結果。
使用單元測試函式庫¶
類別初始化¶
就像 CodeIgniter 其它多數類別一樣, Unit Test 類別可以在你的 controller 內透過 $this->load->library 函式來初始化:
$this->load->library('unit_test');
載入之後,就可以這樣取得 Unit Test 物件 $this->unit
執行測試¶
提供待測程式與預期的結果來執行測試,如下所示:
$this->unit->run(‘test’, ‘expected result’, ‘test name’, ‘notes’);
其中 ‘test’ 是待測程式實際回傳的值, ‘expected result’ 是你預期的結果, ‘test name’ 用來命名這個測試,可省略, ‘notes’ 是備註,也可省略。範例:
$test = 1 + 1;
$expected_result = 2;
$test_name = 'Adds one plus one';
$this->unit->run($test, $expected_result, $test_name);
預期的結果可以是值相符,或是型別相符兩者之一。 這是值相符的範例:
$this->unit->run('Foo', 'Foo');
這是型別相符的範例:
$this->unit->run('Foo', 'is_string');
注意到第二個參數 “is_string” 了嗎? 這告訴函式要檢查你的待測程式回傳值是否為字串型別。 這裡有一份清單列出了可以用來比對的型別:
- is_object
- is_string
- is_bool
- is_true
- is_false
- is_int
- is_numeric
- is_float
- is_double
- is_array
- is_null
產生報告¶
你可以在每個測試執行後就顯示結果,或是執行完數個測試後才產生報告。 直接 echo 或是 return 就可以顯示報告:
echo $this->unit->run($test, $expected_result);
或是這樣子取得所有測試的報告:
echo $this->unit->report();
報告將會以表格呈現。 如果你偏好原始資料,也可以這樣做來取得原始資料陣列:
echo $this->unit->result();
嚴格模式¶
單元測試類別預設使用鬆散比對來檢查值是否相符。 例如下面的範例:
$this->unit->run(1, TRUE);
測試評估的是一個整數,但預期的結果是一個布林值。 而由於 PHP 的型別鬆散特性,上面的程式使用一般的相等來檢查時, 結果會是 TRUE:
if (1 == TRUE) echo 'This evaluates as true';
若有需要的話,你可以將單元測試類別設置為嚴格模式, 這樣在比對結果時,除了比對值以外,還會比對資料型態:
if (1 === TRUE) echo 'This evaluates as FALSE';
你可以這樣子啟動嚴格模式:
$this->unit->use_strict(TRUE);
類別參考¶
-
class
CI_Unit_test
¶ -
set_test_items
($items)¶ Parameters: - $items (array) – 要顯示的項目列表
Returns: void
設置要顯示的項目列表。可用的選項有:
- test_name
- test_datatype
- res_datatype
- result
- file
- line
- notes
-
run
($test[, $expected = TRUE[, $test_name = 'undefined'[, $notes = '']]])¶ Parameters: - $test (mixed) – 測試資料
- $expected (mixed) – 預期的結果
- $test_name (string) – 測試名稱
- $notes (string) – 附加在此測試的任何備註
Returns: 測試報告
Return type: string
執行單元測試。
-
report
([$result = array()])¶ Parameters: - $result (array) – 一個包含了測試結果的陣列
Returns: 測試報告
Return type: string
為已經執行完的測試產生報告。
-
use_strict
([$state = TRUE])¶ Parameters: - $state (bool) – 嚴格模式旗標
Return type: void
啟用/停用嚴格模式。
-
active
([$state = TRUE])¶ Parameters: - $state (bool) – 是否啟用單元測試
Return type: void
啟用/停用單元測試。
-
result
([$results = array()])¶ Parameters: - $results (array) – 測試結果列表
Returns: 包含測試結果原始資料的陣列
Return type: array
回傳測試結果的原始資料。
-
set_template
($template)¶ Parameters: - $template (string) – 測試結果模板
Return type: void
設置要用來顯示測試結果的模板。
-