一区二区久久-一区二区三区www-一区二区三区久久-一区二区三区久久精品-麻豆国产一区二区在线观看-麻豆国产视频

PHP單元測試利器 PHPUNIT初探第1/2頁

當你遇到以上這些令你沮喪的情況時,你一定會想能有什么更好的辦法去解決呢?辦法當然是有的!這就是使用單元測試。單元測試不但可以在一定程度上解決上述頭疼的問題,而且能讓代碼變的容易維護,還可以能讓你更多地對代碼進行重構(gòu)。

  一旦你編寫好單元測試用例,當你需要修改你的代碼時,你要做的事情就是重新運行你的單元測試用例并觀察這些單元測試用例能否通過,如果通過了的話,證明代碼是沒問題的。

  人們往往會說:既然單元測試這么好,為什么那么多人還是不大愿意去寫單元測試呢?有以下幾種理解上的誤曲:

  1、認為編寫單元測試太浪費時間。雖然目前很多IDE工具都為編寫單元測試建立好了框架,但還是要開發(fā)者編寫一些單元測試的代碼的。就象很多開發(fā)中的最佳實踐一樣,用正確的方法去做正確的事情會為開發(fā)節(jié)省大量的時間。每當新增加新功能時,你可能通過訪問你的網(wǎng)頁到處去點擊手動測試,而運行建立好的單元測試用例其速度其實比通過手工去測試的速度更快。

  2、認為既然代碼能運行了,不需要再編寫單元測試。但假設(shè)團隊中有新的成員,如果沒有良好的單元測試用例,新成員很有可能隨意地去編碼而不考慮各種后果。如果有編寫良好的單元測試,在程序運行時進行各種測試,則能最大程度避免bug的產(chǎn)生。

  3、認為編寫單元測試代碼枯燥無味。程序員的天性是解決問題,而很多程序員認為在緊張的編碼工作時,還要編寫單元測試代碼,會很枯燥。但要知道的是,如果能通過編寫單元測試在很早的階段就能盡可能發(fā)現(xiàn)代碼中多的錯誤的話,那么既節(jié)省時間減少了出錯,何樂而不為?

  開始動手安裝phpunit

  本文中將通過介紹php中的單元測試利器phpunit(http://phpunit.de/),并通過實際例子來講解如何在實際工作中運用phpunit。首先安裝phpunit的方法可以通過php下的pear去安裝:

  pear channel-discover pear.phpunit.de
  pear channel
-discover components.ez.no
  pear channel
-discover pear.symfony-project.com
    pear install phpunit
/phpUnit

  如果你想通過手動方式去安裝,可以參考phpunit的手冊去安裝(http://www.phpunit.de/manual/3.0/en/installation.html)。

  編寫第一個單元測試用例

  下面我們開始編寫第一個單元測試用例。在編寫測試用例時,要遵守如下的phpunit的規(guī)則:

  1 一般地,在測試用例中,可以擴展phpUnit_Framework_TestCase類,這樣就可以使用象setUp(),tearDown()等方法了。

  2 測試用例的名字最好是使用約定俗成的格式,即在被測試類的后面加上”Test”,比如要測試的類為RemoteConnect,則測試用例的命名為RemoteConnectTest。

  3 在一個測試用例中的所有的測試方法,在命名時都應該以test+測試方法名去命名,如testDoesLikeWaffles(),要注意的是該方法必須是聲明為public類型的。當然可以在你的測試用例中包含private的方法,但它們不能被phpunit所調(diào)用。

  4 測試方法中是不能接收參數(shù)的。

  下面首先舉個簡單的例子,代碼如下:

<?php
class RemoteConnect
{
  
public function connectToServer($serverName=null)
  {
    
if($serverName==null){
      
throw new Exception(“That's not a server name!”);
    }
    $fp = fsockopen($serverName,80);
    return ($fp) ? true : false;
  }
  public function returnSampleObject()
  {
    return $this;
  }
}
?>

   上面的代碼其實是實現(xiàn)連接到一個指定的服務器的功能,那么我們可以編寫測試代碼如下:

<?php
require_once('RemoteConnect.php');
class RemoteConnectTest extends phpUnit_Framework_TestCase
{
  
public function setUp(){ }
  
public function tearDown(){ }
  
public function testConnectionIsValid()
  {
    
// test to ensure that the object from an fsockopen is valid
    $connObj = new RemoteConnect();
    
$serverName = 'www.google.com';
    
$this->assertTrue($connObj->connectToServer($serverName) !== false);
  }
}
?>

   在上面的代碼中,由于繼承了phpUnit_Framework_TestCase類,因此在setUp和tearDown方法中,不需要編寫任何代碼。SetUp方法是在每個測試用例運行前進行一些初始化的工作,而tearDown則在每個測試用例運行后進行一些比如資源的釋放等工作。在測試方法中,通過使用phpunit的斷言assertTrue去判斷所返回的布爾值是否為真,這里是通過調(diào)用RemoteConnect.php中的connectToServe方法去判斷能否連接上服務器

php技術(shù)PHP單元測試利器 PHPUNIT初探第1/2頁,轉(zhuǎn)載需保留來源!

鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯(lián)系我們修改或刪除,多謝。

主站蜘蛛池模板: 日韩亚洲综合精品国产 | 欧美视频在线观看免费播放 | 国产三级网站在线观看 | 亚洲欧美人妖另类激情综合区 | 国产在线一区二区三区四区 | 亚洲区小说区图片区qvod伊 | 美女三级福利视频 | 黄色小视频免费 | 亚洲一区二区福利视频 | 婷婷视频网站 | 美女视频国产 | 黄色网址免费在线播放 | jizz大全日本护士喷奶水 | 国产青草视频 | 精品国产第一国产综合精品gif | 国产精品视频一 | 国产一区二区在免费观看 | 久久久久久影院 | 美女被男人桶到嗷嗷叫爽网站 | 国产在线精彩视频 | 国内一区二区三区精品视频 | 91网站网站网站在线 | 综合免费视频 | 国产成人小视频在线观看 | 国产精品黄大片在线播放 | 97国产大学生情侣11在线视频 | 五月伊人网 | 伊人狠狠色j香婷婷综合 | 成人在线小视频 | 久久亚洲精品玖玖玖玖 | 久久精品国产2020观看福利色 | 久久精品视频99精品视频150 | 国内自拍一二三四2021 | 亚洲国产精品第一页 | 成年wwxx视频免费中文 | 狠狠色噜噜狠狠狠狠2021天天 | 亚洲视频在线一区 | 日韩一区二区中文字幕 | 99精品99| 五月婷婷综合激情网 | 国内自拍视频在线看免费观看 |