PHPUnit簡介及使用

1、PHPUnit是什麼?

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

二、手冊:http://www.phpunit.cn/manual/5.7/zh_cn/installation.htmlhtml

2、爲何要用PHPUnit?

一、能夠經過命令操控測試腳本api

二、能夠測試性能數組

三、能夠測試代碼覆蓋率app

四、能夠自動化的更新測試用例的參數數據框架

五、各類格式的日誌函數

3、PHPUnit使用規則

一、 通常被測試類的後面加上」Test」,好比要測試的類爲Array,則測試用例的命名爲ArrayTest。性能

二、測試類ArrayTest繼承於PHPUnit_Framework_TestCase測試

三、測試方法必須爲public權限,都是test開頭,或者你也能夠選擇給其加註釋@test來代表該函數爲測試函數ui

四、經過斷言方法來對實際值和預期值進行斷言,斷言方法能夠參照手冊: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

4、PHPUnit測試代碼覆蓋率

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

能夠經過配置phpunit.xml設置須要測試的代碼路徑或文件

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

一、經過生成html頁面查看代碼覆蓋率

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

命令解釋:

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

覆蓋率結果:

能夠看到目錄裏每一個文件的覆蓋率:

還能夠清晰的看到每個文件代碼覆蓋率:

二、經過生成的text文件查看代碼覆蓋率

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

命令解釋:

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

覆蓋率結果:

能夠清晰的看到總覆蓋率和每一個文件的覆蓋率。

覆蓋率計算問題:

一、類:只有類中全部代碼都執行了,覆蓋率才爲100%;

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

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

相關文章
相關標籤/搜索