一起草最新网址_日韩一区二区麻豆国产_91视频婷婷_日本一区二区视频在线_日韩激情一区二区三区_国产另类第一区_成人免费在线播放视频_亚洲永久精品ww.7491进入_久久这里有精品视频_久久精品一级片_日韩av在线网页_波多野结衣不卡视频

單元測試對PHP代碼的檢查_PHP教程

編輯Tag賺U幣
教程Tag:暫無Tag,歡迎添加,賺取U幣!

推薦:解析PHP編碼規范之注釋和文件結構
文件結構 | |――images |――include |――parameter |――config |――function |――index images存放圖片文件,include中是系統是要引用的文件,一般在parameter中存放參數文件,config中存放配置文件,function中存放方法文件,如javascript的方法等,

測試驅動的開發和單元測試是確保代碼在經過修改和重大調整之后依然能如我們期望的一樣工作的最新方法。在本文中,您將學習到如何在模塊、數據庫和用戶界面(UI)層對自己的 PHP 代碼進行單元測試。

現在是凌晨 3 點。我們怎樣才能知道自己的代碼依然在工作呢?

Web 應用程序是 24x7 不間斷運行的,因此我的程序是否還在運行這個問題會在晚上一直困擾我。單元測試已經幫我對自己的代碼建立了足夠的信心 —— 這樣我就可以安穩地睡個好覺了。

單元測試 是一個為代碼編寫測試用例并自動運行這些測試的框架。測試驅動的開發 是一種單元測試方法,其思想是應該首先編寫測試程序,并驗證這些測試可以發現錯誤,然后才開始編寫需要通過這些測試的代碼。當所有測試都通過時,我們開發的特性也就完成了。這些單元測試的價值是我們可以隨時運行它們 —— 在簽入代碼之前,重大修改之后,或者部署到正在運行的系統之后都可以。

PHP 單元測試

對于 PHP 來說,單元測試框架是 PHPUnit2。可以使用 PEAR 命令行作為一個 PEAR 模塊來安裝這個系統:% pear install PHPUnit2。

在安裝這個框架之后,可以通過創建派生于 PHPUnit2_Framework_TestCase 的測試類來編寫單元測試。

模塊單元測試

我發現開始單元測試最好的地方是在應用程序的業務邏輯模塊中。我使用了一個簡單的例子:這是一個對兩個數字進行求和的函數。為了開始測試,我們首先編寫測試用例,如下所示。

清單 1. TestAdd.php

 

require_once 'Add.php';

require_once 'PHPUnit2/Framework/TestCase.php';

class TestAdd extends PHPUnit2_Framework_TestCase

{

function test1() { $this->assertTrue( add( 1, 2 ) == 3 ); }

function test2() { $this->assertTrue( add( 1, 1 ) == 2 ); }

}

?>

這個 TestAdd 類有兩個方法,都使用了 test 前綴。每個方法都定義了一個測試,這個測試可以與清單 1 一樣簡單,也可以十分復雜。在本例中,我們在第一個測試中只是簡單地斷定 1 加 2 等于 3,在第二個測試中是 1 加 1 等于 2。

PHPUnit2 系統定義了 assertTrue() 方法,它用來測試參數中包含的條件值是否為真。然后,我們又編寫了 Add.php 模塊,最初讓它產生錯誤的結果。

清單 2. Add.php

 

function add( $a, $b ) { return 0; }

?>

現在運行單元測試時,這兩個測試都會失敗。

清單 3. 測試失敗

% phpunit TestAdd.php

PHPUnit 2.2.1 by Sebastian Bergmann.

FF

Time: 0.0031270980834961

There were 2 failures:

1) test1(TestAdd)

2) test2(TestAdd)

FAILURES!!!

Tests run: 2, Failures: 2, Errors: 0, Incomplete Tests: 0.

現在我知道這兩個測試都可以正常工作了。因此,可以修改 add() 函數來真正地做實際的事情了。

 

function add( $a, $b ) { return $a $b; }

?>

現在這兩個測試都可以通過了。

清單 4. 測試通過

% phpunit TestAdd.php

PHPUnit 2.2.1 by Sebastian Bergmann.

..

Time: 0.0023679733276367

OK (2 tests)

%

盡管這個測試驅動開發的例子非常簡單,但是我們可以從中體會到它的思想。我們首先創建了測試用例,并且有足夠多的代碼讓這個測試運行起來,不過結果是錯誤的。然后我們驗證測試的確是失敗的,接著實現了實際的代碼使這個測試能夠通過。

我發現在實現代碼時我會一直不斷地添加代碼,直到擁有一個覆蓋所有代碼路徑的完整測試為止。在本文的最后,您會看到有關編寫什么測試和如何編寫這些測試的一些建議。

數據庫測試

在進行模塊測試之后,就可以進行數據庫訪問測試了。數據庫訪問測試 帶來了兩個有趣的問題。首先,我們必須在每次測試之前將數據庫恢復到某個已知點。其次,要注意這種恢復可能會對現有數據庫造成破壞,因此我們必須對非生產數據庫進行測試,或者在編寫測試用例時注意不能影響現有數據庫的內容。

數據庫的單元測試是從數據庫開始的。為了闡述這個問題,我們需要使用下面的簡單模式。

清單 5. Schema.sql

DROP TABLE IF EXISTS authors;

CREATE TABLE authors (

id MEDIUMINT NOT NULL AUTO_INCREMENT,

name TEXT NOT NULL,

PRIMARY KEY ( id )

);

清單 5 是一個 authors 表,每條記錄都有一個相關的 ID。

接下來,就可以編寫測試用例了。

清單 6. TestAuthors.php

 

require_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

 

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 中的代碼執行單元測試會顯示這 3 個測試全部失敗了:

清單 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.

%

分享:解答PHP和MySQL操作應該注意的一些細節
對于 MySQL ,第一件你必須牢記的是它的每一行命令都是用分號 (;) 作為結束的,但沒有完全絕對的事,在這兒也是一樣。 當一行 MySQL 被插入在 PHP 代碼中時,最好把后面的分號省略掉,例如: mysql_query (INSERT INTO tablename (first_name, last_name) V

共2頁上一頁12下一頁
來源:模板無憂//所屬分類:PHP教程/更新時間:2009-06-21
相關PHP教程
亚洲欧美在线看| 久久国产露脸精品国产| 国产精品午夜影院| 成人一区二区在线观看| 久久精品在线观看| 久久在线观看视频| www亚洲国产| 91在线免费播放| 丁香婷婷综合激情| 五月天视频一区| 女女百合国产免费网站| 欧美丰满少妇人妻精品| 日韩精品在线免费看| 日韩电影免费一区| 日韩免费在线观看| 国产成人激情小视频| 熟妇高潮精品一区二区三区| 91久久久久久久久久久久| 中文字幕高清不卡| 97久久久久久| 成人在线国产视频| 波多野结衣电车| 欧美伊人久久久久久午夜久久久久| 成人精品在线视频| 天天操天天干天天操天天干| 中文字幕精品一区二区三区精品 | 成人性生交大片免费看无遮挡aⅴ| 成人福利视频网站| 社区色欧美激情 | 北条麻妃av高潮尖叫在线观看| 国语对白做受69按摩| 色综合天天综合狠狠| 九色一区二区| 午夜毛片在线观看| 在线一区二区三区做爰视频网站| 97自拍视频| 麻豆精品一区二区三区视频| 中文字幕中文字幕一区二区 | 色综合天天综合给合国产| 精品视频免费观看| 天天做天天爱夜夜爽| 欧美视频在线观看一区二区| 亚洲午夜久久久影院伊人| 国产精品无码专区av免费播放| 在线播放欧美女士性生活| 波多野结衣与黑人| 麻豆国产91在线播放| 久久久久久国产精品三级玉女聊斋| 中文字幕影片免费在线观看| 亚洲欧美日韩精品久久久久| 免费在线成人av| 精品久久久久中文慕人妻| 亚洲性猛交xxxxwww| 国产精品久久久久久久无码| 亚洲精品乱码久久久久久| 日本午夜精品一区二区三区| 精品人妻久久久久一区二区三区 | 99久久免费国产| 国产精华一区| 亚洲精品国产手机| 久久国产精品偷| 亚洲欧美小视频| 亚洲欧美国内爽妇网| 亚洲天堂影视av| 精品视频站长推荐| 亚洲综合色噜噜狠狠| 2021狠狠干| 91免费看视频| 天堂精品一区二区三区| 久久国产精品99久久久久久老狼| 国产精品黄色影片导航在线观看| 日韩精品一区二区亚洲av| 亚洲精品色婷婷福利天堂| av网在线播放| 欧美一级国产精品| 亚洲伊人色欲综合网| 中国 免费 av| 久久综合一区二区| 黄瓜视频免费观看在线观看www| 国内外成人在线| 欧美国产综合视频| 日韩综合在线视频| 韩国成人一区| 成人午夜大片免费观看| 综合色婷婷一区二区亚洲欧美国产| www..com久久爱| 国产传媒久久久| 一区二区在线观看视频| 亚洲36d大奶网| 婷婷成人综合网| 亚洲综合一区中| 国产精品系列在线观看| 欧美日韩在线精品| 日本一级黄视频| 日日摸夜夜添夜夜添精品视频| 成人免费视频网站| 91在线观看地址| 99热这里只有精品在线播放| 欧美亚洲综合色| 麻豆天美蜜桃91| 欧美一级高清免费| 卡一卡二国产精品 | 99riav久久精品riav| 久久久亚洲精品无码| 在线观看免费成人| 久久综合成人网| 国产精品久久久久久久久久久新郎 | 日本熟妇人妻中出| 精品日韩一区二区三区免费视频| wwwxxx亚洲| 国产精品日韩一区二区三区| 久久久国产综合精品女国产盗摄| 中文字幕第88页| 在线亚洲国产精品网| 久久午夜精品| 岳毛多又紧做起爽| 亚洲精品999| 久久精品电影| heyzo国产| 国产丝袜一区二区| 欧美一级特黄aaaaaa大片在线观看 | 91国内在线播放| 日韩在线欧美在线| 欧美日韩午夜剧场| 5g国产欧美日韩视频| 亚洲欧洲性图库| 色欲人妻综合网| 国产精品免费在线播放| 调教+趴+乳夹+国产+精品| 九九免费精品视频| 精品欧美国产| 欧美精品亚洲二区| 午夜视频在线免费播放| 日本美女高潮视频| 久久免费少妇高潮久久精品99| 久久一夜天堂av一区二区三区| 精品久久香蕉国产线看观看亚洲| 久久久午夜影院| 免费在线观看污污视频| 亚洲性无码av在线| 成人av先锋影音| 午夜爽爽爽男女免费观看| 欧美日韩在线不卡一区| 精品偷拍一区二区三区在线看| 精品伊人久久久久7777人| 色欲av无码一区二区三区| 国产一区深夜福利| 欧美三区免费完整视频在线观看| 草草视频在线播放| 国产在线视频三区| 91亚色免费| 欧美精品一区二区三区在线播放| 国产一区二区91| 日本老熟俱乐部h0930| 亚洲精品成人a8198a| yw.139尤物在线精品视频| 国产精品久久久久久久蜜臀| 亚洲综合久久网| 中文字幕第88页| 91视频免费网站| 精品一区二区三区电影| 中文字幕不卡的av| 国产高清第一页| 激情综合丁香五月| 亚洲天堂第一区| 日韩av免费在线观看| 欧美久久久久久久久中文字幕| 免费成人你懂的| www.99re7.com| 国产精品无码专区av在线播放| 成人亚洲激情网| 亚洲欧美国产一本综合首页| 亚洲综合在线免费观看| 奇米精品一区二区三区四区| 久草视频中文在线| 国产不卡的av| 99久久久无码国产精品性色戒| 国产精品成人一区| 亚洲香蕉成视频在线观看| 久久精品视频日本| 男人的天堂视频在线| 国产精品国产自产拍高清av水多| 亚洲第一在线视频| 精品久久久久久久久久ntr影视| 国产大片一区二区| 国产视频一区二区三| 久久久久久蜜桃| xxx在线播放| 免费在线观看污网站| www.夜夜爱| 五月天亚洲综合情| 7777精品久久久大香线蕉小说| 久久99精品久久久久久琪琪| 欧美mv和日韩mv国产网站| 欧美日在线观看| 国产精品久久久久久久99| 亚洲精品成人久久| 欧美自拍丝袜亚洲| 亚洲精品日日夜夜| 91亚洲永久精品| 国产成人精品在线看| 老司机精品导航| 亚洲国产精品二区| 亚洲最大成人在线视频| 免费黄色小视频在线观看| 久久网一区二区| 久草免费新视频| 国产在线一二区| 国产精品国产三级国产专区52| 天天综合天天做| 午夜国产福利视频| 91免费在线看片| 91狠狠综合久久久| 手机在线免费看片| xxxx 国产| 国产中文字幕视频| 国产又粗又猛又黄| www.久久成人| 青青青伊人色综合久久| 精品一二三四区| 9l视频自拍9l视频自拍| 欧美日韩大陆在线| 8x福利精品第一导航| 欧美日韩一区二区在线观看视频| 91黄色在线观看| 精品国产三级a在线观看| 国产做a爰片久久毛片| 精品国产免费一区二区三区四区| 欧美午夜不卡在线观看免费| 日韩亚洲欧美一区| 最新亚洲国产精品| 97国产精品视频| **亚洲第一综合导航网站| 日韩精品久久久免费观看| 国精产品一区一区三区视频| 国产精品久久久毛片| 亚洲第一综合网| 波多野结衣一区二区三区四区| 色婷婷av一区二区三区之红樱桃| 国模一区二区三区白浆| 亚洲国产精品国自产拍av| 欧美日韩国产影院| 亚洲精品网址在线观看| 91av免费观看91av精品在线| 精品蜜桃传媒| av黄色在线网站| 久久久视频6r| 一区二区自拍偷拍| 成人精品视频一区二区三区| 一级女性全黄久久生活片免费| 欧美一区二区在线免费播放| 美女福利视频一区| 99视频国产精品免费观看| 国产日韩av网站| 免费精品在线视频| 天天射天天色天天干| 亚洲精选视频免费看| 亚洲男人天堂2023| 国产精品免费一区二区三区四区| 国产h视频在线播放| 91香蕉视频在线播放| 媚黑女一区二区| 亚洲成人免费av| 欧美日韩成人精品| 久久久久久久久影视| 日本美女xxx| 麻豆一区二区99久久久久| 欧美日韩精品国产| 555www成人网| 国产免费黄视频| 久久精品国产成人av| 99re这里只有精品6| 亚洲精品美女网站| 日韩高清国产精品| 成人免费看aa片| 视频在线观看91| 欧美日韩一卡二卡| 成人在线视频网址| 在线不卡av电影| 日产欧产美韩系列久久99| 在线观看国产91| 成人网页在线免费观看| 美女又黄又免费的视频| 视频污在线观看| 欧美成人乱码一区二区三区| 国产精品视频在线免费观看 | 国产精品视频第一页| 精品久久久久久久久国产字幕| 国产精品福利久久久| 国产十八熟妇av成人一区| 国产一区二区精品在线观看| 国产亚洲福利一区| 丰满人妻中伦妇伦精品app| 国产激情视频在线播放 | 欧美一级黄色影院| 色哟哟国产精品色哟哟| 亚洲成色777777女色窝| 久草免费福利在线| 国产麻豆日韩欧美久久| 欧美第一区第二区| 成年人视频在线免费| 国产高清在线精品| 国外成人在线直播| 午夜免费一级片| 国产福利一区二区三区视频| 久久综合伊人77777尤物| 日韩亚洲第一页| 人妻有码中文字幕| 亚洲视频一区二区在线观看| 亚洲国产精品一区二区第一页 | 日韩视频在线免费看| 色婷婷亚洲精品| 中文字幕5566| 日韩欧美在线一区二区三区| 偷拍夫妻性生活| 欧美一区二区三区在线观看| 91制片厂在线| 精品女同一区二区三区在线播放| 日韩有码免费视频| 一级日本不卡的影视| www.99r| 亚洲精品自拍动漫在线| 免费在线观看污网站| 欧美日本在线视频| 手机看片日韩国产| 中文字幕在线日本| 91精品1区2区| 久久久久高清| 一级黄色免费看| 欧美成人一区二区三区电影| 国产 日韩 欧美在线| 亚洲精品久久久久久久久久久久久久 | 国产精品美女www| 久久黄色一级视频| 亚洲私人影院在线观看| 日本精品一区二区三区在线播放视频| 色婷婷在线视频观看| 欧美日韩精品在线视频| 婷婷五月色综合| 高清毛片aaaaaaaaa片| 一区二区欧美激情| 97超碰在线资源| 国产精品人人做人人爽人人添 | 日韩欧美在线网站| 精品久久久久久无码中文野结衣| 久久精品动漫| www.国产精品一二区| 97超碰在线免费观看| 国产精品的网站| 国产对白在线播放| 日本在线不卡视频一二三区| 欧美高清激情视频| 日韩中文字幕组| 福利91精品一区二区三区| 成人黄视频免费| 国产精品久久免费| 日本久久久久久| 精品女同一区二区三区| 久久婷婷开心| 综合网日日天干夜夜久久| 国产v日产∨综合v精品视频| www.色小姐com| 男人草女人视频| 性欧美视频videos6一9| **性色生活片久久毛片| 中文字幕在线观看1| 米仓穗香在线观看| 日韩欧美在线网站| 国产精品变态另类虐交| 精品国产一区二区三区四区精华| 国产成人aaaa| 亚洲av无码国产精品久久| 久久精品人人做人人爽| 天天干天天爽天天操| 日本www在线播放| 日韩午夜电影在线观看| 国产成人免费观看视频| 国产精品一区二区三区在线播放 | 欧美成人免费观看视频| 国产麻豆午夜三级精品| 成人性生交xxxxx网站| 精品久久久久久久久久久久久| 中文字幕av影视| 日本精品在线视频| 日本三级亚洲精品| www.天天射.com| 中文字幕精品一区二区精品| 国产一区二区在线电影| 日韩av在线播| 香蕉网在线视频| 中文字幕一区二区三区最新 | 国产精品第56页| 黄色高清视频网站| 精品亚洲夜色av98在线观看 | 伊人男人综合视频网| 丰满大乳国产精品| www.四虎精品| 51成人做爰www免费看网站| 在线免费一区三区| 人妻视频一区二区三区| www.男人天堂网| 国产亚洲精品久久久久久| 成人性视频免费网站| 任我爽在线视频| 欧美a级免费视频| 51色欧美片视频在线观看| 一区在线播放视频| 日韩av黄色片| 99视频在线免费| 国产成人精品电影久久久|