這組測試覆蓋了從表中刪除作者、向表中插入作者以及在驗(yàn)證作者是否存在的同時(shí)插入作者等功能。這是一個(gè)累加的測試,我發(fā)現(xiàn)對于尋找錯(cuò)誤來說這非常有用。觀 察一下哪些測試可以正常工作,而哪些測試不能正常工作,可以快速地找出哪些地方出錯(cuò)了,然后可以進(jìn)一步理解它們之間的區(qū)別。
初產(chǎn)生失敗的 dblib.php PHP 數(shù)據(jù)庫訪問代碼版本如下所示。
清單 7. dblib.php
<?php
require_once('DB.php');
class Authors
{
public static function get_db()
{
$dsn = 'mysql://root:password@localhost/unitdb';
$db =& DB::Connect( $dsn, array() );
if (PEAR::isError($db)) { die($db->getMessage()); }
return $db;
}
public static function delete_all()
{
return false;
}
public static function insert( $name )
{
return false;
}
public static function get_all()
{
return null;
}
}
?>
對清單 8 中的代碼執(zhí)行單元測試會(huì)顯示這 3 個(gè)測試全部失敗了:
清單 8. dblib.php
% phpunit TestAuthors.php
PHPUnit 2.2.1 by Sebastian Bergmann.
FFF
Time: 0.007500171661377
There were 3 failures:
1) test_delete_all(TestAuthors)
2) test_insert(TestAuthors)
3) test_insert_and_get(TestAuthors)
FAILURES!!!
Tests run: 3, Failures: 3, Errors: 0, Incomplete Tests: 0.
%