您的位置:軟件測試 > 開源軟件測試 > 開源單元測試工具 > PHPUnit
phpunit和php單元測試體驗
作者:網(wǎng)絡轉載 發(fā)布時間:[ 2014/1/2 15:24:55 ] 推薦標簽:php phpunit 單元測試

前段時間的一個項目中,由于開發(fā)工程師時間比較緊,沒時間進行單元測試。所以我臨時替補作單元測試。個人對phpunit了解不是很深入,本文只是對phpunit框架做簡要介紹并寫一些使用的體驗。有誤之處還請多多指證。

  和其他的Xunit測試框架一樣,phpunit框架主要分為以下部分:

      TestCase --測試用例
      TestSuite --測試套件(我習慣稱其為測試用例集)
      Assert--斷言(我習慣稱其為驗證方式)
      TestResult--測試結果

  對于testcase,phpunit中除了一般的testcase,還包含了Incompletetestcase(未完成的)和skiptestcase(跳過的測試用例)。

  testcase是單元測試的基本組成部分,每個testcase均包含以下部分:

    Setup()---測試前的初始化,執(zhí)行每個testMethod前均會執(zhí)行
    Teardown()--測試完成后恢復,執(zhí)行完每個testMethod后均會執(zhí)行
    testMethod()--測試方法(測試點)

寫phpunit測試腳本時,可以通過phpunit Skeleton 生成單元測試的腳本結構,然后在結構中填寫測試用例。

如果不用skeleton生成,自己寫也很方便。

phpunit的測試文件包含以下部分:

引入必要的文件

       require 'x.php'--被測試的php文件
       rquire 'phpunitpathphpunitframework'---  phpunit的framewok文件

創(chuàng)建一個從phpunit frame繼承的類

class XXtest extends PHPUnit_Framework_TestCase

 [初始化公共的參數(shù)]

  public $para1='';

  public $para2='';

寫setup和teardown函數(shù)

 public function setUp() {}

 public function tearDown() {}

 注意,每運行一個test的函數(shù),均會首先運行setup,每運行完一個函數(shù),均會運行teardown. 寫這2個函數(shù)時需要注意。

 下一步是寫測試函數(shù)了,比如測試

  public function sum(a,b)

  {return a+b;}

 寫測試函數(shù)時和測試用例是對應的,我們首先測試正常情況下求和是否正確,testXX函數(shù)可以如下:

  public function testSumNormal ()                                                      
     {

  coding....

  assertSame(expectresult,actualcode,message)

}

 所有的測試函數(shù)均已test開頭,一般通過assert..驗證結果是否正確。

寫完單元測試腳本后,下一步是執(zhí)行測試,簡單的命令是:phpunit xxx.php 更加詳細的命令如下: phpunit --log-xml(log 文件格式) 文件路徑/文件名 --coverage-html(代碼覆蓋文件格式) 文件路徑/文件名 單元測試用例類 單元測試文件 如:phpunit --log-xml path/createAlbumlog --coverage-html path/logs/ createAlbumtest createAlbum.php 命令執(zhí)行過程中,.--表示成功,e--代表error, f--代表失敗, 執(zhí)行完成后會顯示測試用例成功、失敗和出錯情況。也可以通過查看log查看測試情況,coverage文件可以查看單元測試腳本對測試文件代碼覆蓋率情況。

 自己感覺單元測試過程中需注意以下幾個方面:

 1、各測試用例(testXXX)的數(shù)據(jù)耦合度要低。如果耦合度較高的話,如果前一個測試用例失敗的話,之后的測試用例會出現(xiàn)error,無法繼續(xù)。

 2、測試用例盡量覆蓋各邏輯分支,保證測試覆蓋率。

 3、測試用例設計和非單元測試的用例設計方法一致,針對一個方法測試需包含:正常測試、異常測試和邊界測試等。

 4、合理的利用setUp合tearDown, 每執(zhí)行一個testXX時,都首先運行setUP,執(zhí)行完testXX后,都會運行tearDown, 因此可以把各個測試用例開始都需要初始化且初始化值一樣的參數(shù)放到setUP中,而執(zhí)行完后需要unset的參數(shù)放到tearDown函數(shù)中。

 5、用phpunit skelon 生成測試框架時,只有.php文件才可以,測試其他格式的文件如 inc格式文件無法生成的?梢孕薷奈募笤谏。

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