溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

PHP單元測試使用手冊

發(fā)布時間:2020-07-26 17:42:07 來源:網(wǎng)絡 閱讀:406 作者:Seven_engine 欄目:web開發(fā)

1 單元測試簡介

1.1 單元測試

單元測試:是指對軟件中的最小可測試單元進行檢查和驗證。(單一模塊、一個過程、一個函數(shù)等)

1.2 單元測試范圍和目標

    單元測試包含計劃階段、設(shè)計階段、實現(xiàn)階段和執(zhí)行階段。起始于詳細設(shè)計,主要是各模塊的源代碼進行測試,直到單元階段結(jié)束后終止。此時主要是PHP單元測試。

單元測試的目標是隔離程序部件并證明這些單個部件是正確的。一個單元測試提供了代碼片斷需要滿足的嚴密的書面規(guī)約。

2 安裝與使用

2.1 安裝PHPUnit

1、在Linux中下載PHPUnit  wget https://phar.phpunit.de/phpunit.phar

2、添加執(zhí)行權(quán)限 chmod +x phpunit.phar

3、更改路徑mv phpunit.phar  /usr/local/bin/phpunit

4、查看phpunit版本 phpunit --version


2.2 使用

1、如有詳細設(shè)計文檔,先仔細閱讀詳細設(shè)計文檔;針對需要測試的PHP代碼先進行靜態(tài)走讀(查看是否正規(guī)編寫、查看是否有邏輯錯誤、查看是否有未實現(xiàn)的功能等。)

2、編寫測試腳本(以xxx.php為例)

1)首先是調(diào)用xxx配置文件以及調(diào)用PHPunit


PHP單元測試使用手冊

有些是這樣的:
/**************測試加載******************/
const CONFIG_ENV = 'office';

// include_once __DIR__."/../../sdk/Autoload.php";
// include_once "ApiHelper.php";
include('/data/wuheyou_php/trunk/sdk/Autoload.php');
ImportModule('home');

2)然后測試模塊加載類

PHP單元測試使用手冊


3)最后編寫測試用例(根據(jù)php代碼,分析等,傳入正確參數(shù)、錯誤參數(shù)、缺失參數(shù)、多余參數(shù)、路徑覆蓋、條件判斷等)

PHP單元測試使用手冊

訪問私有函數(shù)
	public function testuserTechDonateResource(){
		print("資源爭奪戰(zhàn)個人科技貢獻");
		for ($i=0; $i<=20; $i++){
			//資源爭奪戰(zhàn) 8基礎(chǔ)戰(zhàn)力,9幸運倍率,10守城加成,11寬度
			$boss = new GangTech(144540,136);
			$method = new ReflectionMethod('GangTech','userTechDonateResource');
			$method->setAccessible(true);
			$tech_id = 9;
			$type = 3;//資源爭奪戰(zhàn)
			$result = $method->invoke($boss,$tech_id,$type);
			var_dump($result);
			$this->assertArraySubset(["result"=>"true"],array("result"=>"true","code"=>0,"msg"=>"成功","data"=>array("next_score"=>60,"star"=>3)));
			}
	}
例子:1
	public function testPublishGuessodds(){
		echo "odds為負數(shù)!\n";
		$guess = new GameGuess();
		$uid = 186;
		$guessdesc = "這是我的猜猜猜22222";
		//$options = array(array('option_name'=>'我是誰', 'odds'=>1.6),array('option_name'=>'我是誰2', 'odds'=>1.5));//傳入多組
		$options[] = array('option_name'=>'是是是是是', 'odds'=>-1.6);//傳入單組
		$aborttime = '1449049541';  
		$result = $guess->publishGuess($uid,$guessdesc,$options,$aborttime);
		// var_dump($result);
		$this->assertEquals('賠率設(shè)置不合法',$result->msg);
	}
例子2:
	public function testbestlist(){
		print ("\n 城市轉(zhuǎn)轉(zhuǎn)轉(zhuǎn)押注情況列表\n");
		$list = new GameCitytrun();
		$data = array('uid' =>183 , 'gtypeid' =>20 );
		$result = $list->betList($data);
		var_dump($result);
		$this->assertTrue(true);
	}	
例子3:
	public function testdoSpin(){
		print ("搖獎生成隨機數(shù),作為×××的布局\n");
		$DSp = new GameBetTiger();
		$method = new ReflectionMethod('GameBetTiger','doSpin');
		$method->setAccessible(true);
		$res_num = array();
		$this->res_num = array(
            "1" => Array
                (
                    "11" => 4,
                    "21" => 2,
                    "31" => 5
                ),
            "2" => Array
                (
                    "12" => 5,
                    "22" => 2,
                    "32" => 7
                ),
            "3" => Array
                (
                    "13" => 4,
					"23" => 2,
                    "33" => 4
                ),
            "4" => Array
                (
                    "14" => 2,
                    "24" => 2,
                    "34" => 9
                ),
            "5" => Array
                (
                    "15" => 2,
                    "25" => 5,
                    "35" => 8
                )
        );
		$result = $method->invoke($DSp);
		var_dump($this->res_num);        	

3、執(zhí)行對比返回結(jié)果 phpunitxxx.php

1)  正確數(shù)據(jù)發(fā)送請求時,查看返回數(shù)據(jù)是否正確、是否會報錯、數(shù)據(jù)庫中是否正常插入數(shù)據(jù)、關(guān)閉相關(guān)數(shù)據(jù)庫是否能正常工作等。

2)錯誤數(shù)據(jù)發(fā)送請求時,查看返回數(shù)據(jù)是否有異常處理、是否有報錯、數(shù)據(jù)是否有異常、等。

3)發(fā)現(xiàn)BUG,在提交BUG指向相關(guān)開發(fā)并督促修復bug,只至關(guān)閉BUG。


向AI問一下細節(jié)

免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI