<?phprequire_once 'dblib.php';require_once 'PHPUnit2/Framework/TestCase.php';class TestAuthors extends PHPUnit2_Framework_TestCase{ function test_delete_all() { $this->assertTrue( Authors::delete_all() ); } function test_insert() { $this->assertTrue( Authors::delete_all() ); $this->assertTrue( Authors::insert( 'Jack' ) ); } function test_insert_and_get() { $this->assertTrue( Authors::delete_all() ); $this->assertTrue( Authors::insert( 'Jack' ) ); $this->assertTrue( Authors::insert( 'Joe' ) ); $found = Authors::get_all(); $this->assertTrue( $found != null ); $this->assertTrue( count( $found ) == 2 ); }}?> |
這組測試覆蓋了從表中刪除作者、向表中插入作者以及在驗證作者是否存在的同時插入作者等功能。這是一個累加的測試,我發現對于尋找錯誤來說這非常有用。觀察一下哪些測試可以正常工作,而哪些測試不能正常工作,就可以快速地找出哪些地方出錯了,然后就可以進一步理解它們之間的區別。
最初產生失敗的 dblib.php PHP 數據庫訪問代碼版本如下所示。
清單 7. dblib.php
<?phprequire_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 中的代碼執行單元測試會顯示這 3 個測試全部失敗了:
清單 8. dblib.php
% phpunit TestAuthors.phpPHPUnit 2.2.1 by Sebastian Bergmann.FFFTime: 0.007500171661377There were 3 failures:1) test_delete_all(TestAuthors)2) test_insert(TestAuthors) |