PHPUnit簡介及使用


一、PHPUnit是什么?

1、它是一款輕量級的PHP測試框架,地址:http://www.phpunit.cn

2、手冊:http://www.phpunit.cn/manual/5.7/zh_cn/installation.html

二、為什么要用PHPUnit?

1、可以通過命令操控測試腳本

2、可以測試性能

3、可以測試代碼覆蓋率

4、可以自動化的更新測試用例的參數數據

5、各種格式的日志

三、PHPUnit使用規則

1、 一般被測試類的后面加上”Test”,比如要測試的類為Array,則測試用例的命名為ArrayTest。

2、測試類ArrayTest繼承於PHPUnit_Framework_TestCase

3、測試方法必須為public權限,都是test開頭,或者你也可以選擇給其加注釋@test來表明該函數為測試函數

4、通過斷言方法來對實際值和預期值進行斷言,斷言方法可以參照手冊:http://www.phpunit.cn/manual/5.7/zh_cn/appendixes.assertions.html

 

快速入門:

class ArrayTest extends PHPUnit_Framework_TestCase 
{
//測試用例運行前初始化
public function setUp(){}

//測試用例運行后執行
public function tearDown(){}
/**
* @test
*/
public function testArrayIsEmpty()
{
$fixture = array();

// 斷言數組$fixture中元素的數目是0。
$this->assertEquals(0, sizeof($fixture));
}
/**
* @test
*/
public function testarrayHasKey()
{
$arr = array(
'id'=>666,
'name'=>'zhangsan',
);
//斷言$arr是一個數組
$this->assertTrue(is_array($arr));
//斷言數組$arr中含有索引id
$this->assertArrayHasKey('id',$arr);
//斷言數組$arr中含有索引name
$this->assertArrayHasKey('name',$arr);
}

}

命令行啟動測試用例:

phpunit  測試文件名,此處為要測試ArrayTest.php文件

phpunit ArrayTest.php

PHPUnit 5.7.5 by Sebastian Bergmann and contributors.

.. 2 / 2 (100%)

Time: 138 ms, Memory: 3.25MB

OK (2 tests, 4 assertions)

記錄測試日志:

日志多種格式http://www.phpunit.cn/manual/5.7/zh_cn/textui.html#textui.clioptions

phpunit ArrayTest.php --log-tap log.txt

TAP version 13
ok 1 - ArrayTest::testArrayIsEmpty
ok 2 - ArrayTest::testarrayHasKey
1..2

四、PHPUnit測試代碼覆蓋率

可以參考:http://www.phpunit.cn/manual/current/zh_cn/code-coverage-analysis.html

可以通過配置phpunit.xml設置需要測試的代碼路徑或文件

例如:phpunit.xml的配置(放在項目根目錄)

1、通過生成html頁面查看代碼覆蓋率

通過執行命令:phpunit --coverage-html ./coverage ./src/test

命令解釋:

  • --coverage-html:生成覆蓋率結果的html
  • coverage:html生成目錄,可以重新定義
  • ./src/test:測試用例目錄(也可以是單個測試用例文件)

覆蓋率結果:

可以看到目錄里每個文件的覆蓋率:

還可以清晰的看到每一個文件代碼覆蓋率:

2、通過生成的text文件查看代碼覆蓋率

通過執行命令:phpunit --coverage-text ./src/test > test.log

命令解釋:

  • --coverage-html:生成覆蓋率結果的text
  • ./src/test:測試用例目錄(也可以是單個測試用例文件)
  • > test.log:存放覆蓋率結果的文件(文件名稱自己定義)

覆蓋率結果:

可以清晰的看到總覆蓋率和每個文件的覆蓋率。

覆蓋率計算問題:

1、類:只有類中所有代碼都執行了,覆蓋率才為100%;

2、方法:類中的方法每一行都執行了,覆蓋率才算100%。例如:類中有5個方法,有兩個方法每一行執行了,覆蓋率為:40%;

3、行:每一行代碼都執行了就是100%;

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM