您的位置:軟件測試 > 開源軟件測試 > 開源單元測試工具 > PHPUnit
phpunit入門基礎(chǔ)
作者:網(wǎng)絡轉(zhuǎn)載 發(fā)布時間:[ 2013/3/13 16:44:15 ] 推薦標簽:

什么是PHPUnit  

  PHPUnit是一個輕量級的PHP測試框架。它是在PHP5下面對JUnit3系列版本的完整移植,是xUnit測試框架家族的一員(它們都基于模式先鋒Kent Beck的設計)
  單元測試是幾個現(xiàn)代敏捷開發(fā)方法的基礎(chǔ),使得PHPUnit成為許多大型PHP項目的關(guān)鍵工具。這個工具也可以被Xdebug擴展用來生成代碼覆蓋率報告 ,并且可以與phing集成來自動測試,合它還可以和Selenium整合來完成大型的自動化集成測試。 [編輯本段]如何部署PHPUnit  方法一 使用Pear
  運行 pear channel-discover pear.phpunit.de;
  pear install phpunit/PHPUnit
  方法二 手動安裝
  1 從http://pear.phpunit.de/get/下載軟件包并解壓
  2 把解壓后的目錄加入php.ini中的include_path
  3 將腳本pear-phpunit改名為phpunit
  4 將phpunit腳本中的@php_bin@替換成php可執(zhí)行腳本的路徑
  5 為phpunit腳本增加可執(zhí)行權(quán)限并加入$PATH
  6 將PHPUnit/Runner/Version.php中的@package_version@替換成3位
  PHPUnit版本號 [編輯本段]下面的例子用來測試sizeof函數(shù)工作的正確性  <?php 鼠標
  require_once 'PHPUnit/Framework.php';
  class ArrayTest extends PHPUnit_Framework_TestCase {
  public function testNewArrayIsEmpty() {
  /*Create the Array fixture*/
  $fixture = array();
  /* Assert that the size of the Array * fixture is 0*/
  $this->assertEquals(0, sizeof($fixture));
  }
  public function testArrayContainsAnElement() {
  /* Create the Array fixture*/
  $fixture = array();
  /*Add an element to the Array * fixture*/
  $fixture[] = 'Element';
  /*Assert that the size of the * Array fixture is 1*/
  $this->assertEquals(1, sizeof($fixture));
  }
  }
  ?>
  要點:
  1 編寫的測試用例是一個php腳本
  2 require_once 'PHPUnit/Framework.php'是必須的,另外,你需要在測
  試用例腳本中包含你需要測試的代碼
  3 測試用例的主體必須寫在類中,類名必須和文件名保持一致,還必須是
  PHPUnit_Framework_TestCase的子類
  4 每一個測試用例都是一個public的成員函數(shù),必須以test開頭
  5 程序的輸出使用assert*系列函數(shù)來進行驗證
  該用例需要在Shell下鍵入phpunit ArrayTest.php來運行。結(jié)果如下示:
  [username@machine xx]$ phpunit ArrayTest.php
  PHPUnit 3.1.3 by Sebastian Bergmann.
  ..
  Time: 0 seconds
  OK (2 tests)
  結(jié)果中重要的用紅色標出的結(jié)果,點號 代表一個用例通過(即assert系列函數(shù)都通過)。如果將上面的測試用例testArrayContainsAnElement用例assertEquals函數(shù)中的1改為0,則運行結(jié)果為:
  PHPUnit 3.1.3 by Sebastian Bergmann.
  .F
  Time: 0 seconds
  There was 1 failure:
  1) testArrayContainsAnElement(ArrayTest)
  Failed asserting that <integer:1> matches expected value <integer:0>.
  /home/wiki/apache/htdocs1.5.0/ArrayTest.php:29
  FAILURES!
  Tests: 2, Failures: 1.
  可以很明顯看出結(jié)果由原來的 .. 變?yōu)?.F ,F(xiàn)表示第二個測試用例未通
  過,并且具體與哪一條驗證不符都在后有詳細說明。
  除了F外,一個測試用例還有I(未完成),S (跳過),E (錯誤)三種狀態(tài),詳見http://www.phpunit.de/pocket_guide/3.2/en/textui.html [編輯本段]PHPUnit如何保證測試的準確性  測試用例之間必須保證他們之間是不互相影響的,即這些測試用例無論以任何順序執(zhí)行,他們的結(jié)果都應該一樣。PHPUnit提供了兩個可供重寫的函數(shù)來滿足此要求。
  成員函數(shù)setUp在每一個測試用例開始之前執(zhí)行,用來創(chuàng)建用于測試的環(huán)境。tearDown則在每個測試用例結(jié)束時調(diào)用,用于還原測試用例對環(huán)境帶來的影響。
  上示的測試用例中$fixture = array()可以放在setUp中完成 [編輯本段]PHPUnit還支持哪些高級功能  結(jié)合XDebug生成代碼覆蓋率報告
  如何測試你的測試用例設計,答案是代碼覆蓋率。代碼覆蓋率即當你的
  一套測試用例執(zhí)行完畢時,有多少比例的代碼分支被覆蓋到。
  PHPUnit的代碼覆蓋率報告需要另一個的Extension——XDebug
  (http://www.xdebug.org )支持。當執(zhí)行完測試用例后,得出的結(jié)果類似

軟件測試工具 | 聯(lián)系我們 | 投訴建議 | 誠聘英才 | 申請使用列表 | 網(wǎng)站地圖
滬ICP備07036474 2003-2017 版權(quán)所有 上海澤眾軟件科技有限公司 Shanghai ZeZhong Software Co.,Ltd