W3Cschool
恭喜您成為首批注冊用戶
獲得88經(jīng)驗值獎勵
單元測試是一種為你的應(yīng)用程序中的每個函數(shù)編寫測試的軟件開發(fā)方法。如果你還不熟悉這個概念, 你應(yīng)該先去 Google 一下。
CodeIgniter 的單元測試類非常簡單,由一個測試方法和兩個顯示結(jié)果的方法組成。 它沒打算成為一個完整的測試套件,只是提供一個簡單的機制來測試你的代碼是否 生成了正確的數(shù)據(jù)類型和結(jié)果。
正如 CodeIgniter 中的其他類一樣,在你的控制器中使用 $this->load->library() 方法來初始化單元測試類:
$this->load->library('unit_test');
初始化之后,單元測試類的對象就可以這樣訪問:
$this->unit
要運行一個測試用例,需要提供一個測試和一個期望結(jié)果,像下面這樣:
$this->unit->run('test', 'expected result', 'test name', 'notes');
其中,test 是你希望測試的代碼的結(jié)果,expected result 是期望返回的結(jié)果,test name 是可選的, 你可以為你的測試取一個名字,notes 是可選的,可以填些備注信息。例如:
$test = 1 + 1;
$expected_result = 2;
$test_name = 'Adds one plus one';
$this->unit->run($test, $expected_result, $test_name);
期望的結(jié)果可以是字面量匹配(a literal match),也可以是數(shù)據(jù)類型匹配(a data type match)。 下面是字面量匹配的例子:
$this->unit->run('Foo', 'Foo');
下面是數(shù)據(jù)類型匹配的例子:
$this->unit->run('Foo', 'is_string');
注意第二個參數(shù) "is_string" ,這讓方法測試返回的結(jié)果是否是字符串類型。以下是可用的數(shù)據(jù)類型的列表:
你可以在每個測試之后顯示出測試的結(jié)果,也可以先運行幾個測試,然后在最后生成一份測試結(jié)果的報告。 要簡單的顯示出測試結(jié)果,可以直接在 run 方法的前面使用 echo:
echo $this->unit->run($test, $expected_result);
要顯示一份所有測試的完整報告,使用如下代碼:
echo $this->unit->report();
這份報告會以 HTML 的表格形式顯示出來,如果你喜歡獲取原始的數(shù)據(jù),可以通過下面的代碼得到一個數(shù)組:
echo $this->unit->result();
默認情況下,單元測試類在字面量匹配時是松散的類型匹配??聪旅孢@個例子:
$this->unit->run(1, TRUE);
正在測試的結(jié)果是一個數(shù)字,期望的結(jié)果是一個布爾型。但是,由于 PHP 的松散數(shù)據(jù)類型, 如果使用常規(guī)的比較操作符的話,上面的測試結(jié)果將會是 TRUE 。
if (1 == TRUE) echo 'This evaluates as true';
如果愿意的話,你可以將單元測試設(shè)置為嚴格模式,它不僅會比較兩個數(shù)據(jù)的值, 而且還會比較兩個數(shù)據(jù)的數(shù)據(jù)類型:
if (1 === TRUE) echo 'This evaluates as FALSE';
使用如下代碼啟用嚴格模式:
$this->unit->use_strict(TRUE);
如果你希望在你的代碼中保留一些測試,只在需要的時候才被執(zhí)行,可以使用下面的代碼禁用單元測試:
$this->unit->active(FALSE);
單元測試的結(jié)果默認顯示如下幾項:
你可以使用 $this->unit->set_test_items() 方法自定義要顯示哪些結(jié)果,例如, 你只想顯示出測試名和測試的結(jié)果:
$this->unit->set_test_items(array('test_name', 'result'));
如果你想讓你的測試結(jié)果以不同于默認的格式顯示出來,你可以設(shè)置你自己的模板, 這里是一個簡單的模板例子,注意那些必須的偽變量:
$str = '
<table border="0" cellpadding="4" cellspacing="1">
{rows}
<tr>
<td>{item}</td>
<td>{result}</td>
</tr>
{/rows}
</table>';
$this->unit->set_template($str);
注解
你的模板必須在運行測試 之前 被定義。
classCI_Unit_test
set_test_items($items)
參數(shù):
返回: void
設(shè)置要在測試的結(jié)果中顯示哪些項,有效的選項有:
- test_name
- test_datatype
- res_datatype
- result
- file
- line
- notes
run($test[, $expected = TRUE[, $test_name = 'undefined'[, $notes = '']]])
參數(shù):
返回: Test report
返回類型: string
運行單元測試。
report([$result = array()])
參數(shù):
返回: Test report
返回類型: string
根據(jù)已運行的測試生成一份測試結(jié)果的報告。
use_strict([$state = TRUE])
參數(shù):
返回類型: void
在測試中啟用或禁用嚴格比較模式。
active([$state = TRUE])
參數(shù):
返回類型: void
啟用或禁用單元測試。
result([$results = array()])
參數(shù):
返回: Array of raw result data
返回類型: array
返回原始的測試結(jié)果數(shù)據(jù)。
set_template($template)
參數(shù):
返回類型: void
設(shè)置顯示測試結(jié)果數(shù)據(jù)的模板。
Copyright©2021 w3cschool編程獅|閩ICP備15016281號-3|閩公網(wǎng)安備35020302033924號
違法和不良信息舉報電話:173-0602-2364|舉報郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯(lián)系方式:
更多建議: