日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

PHPUnit简介及使用(thinkphp5的单元测试安装及使用)

發布時間:2024/4/13 50 豆豆
生活随笔 收集整理的這篇文章主要介紹了 PHPUnit简介及使用(thinkphp5的单元测试安装及使用) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

PHPUnit簡介及使用(thinkphp5的單元測試安裝及使用)

一、總結

一句話總結:直接google這個phpunit(how to use phpunit),然后去官網看使用樣例和手冊,那些英文和內容以看懂的,不要有抵觸情緒

官網地址:https://phpunit.de/getting-started-with-phpunit.html

?

1、為什么要用PHPUnit?

測試性能

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

2、可以測試性能

3、可以測試代碼覆蓋率

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

5、各種格式的日志

?

2、官方phpunit使用實例?

Code

src/Email.php

<?php final class Email {private $email;private function __construct($email){$this->ensureIsValidEmail($email);$this->email = $email;}public static function fromString($email){return new self($email);}public function __toString(){return $this->email;}private function ensureIsValidEmail($email){if (!filter_var($email, FILTER_VALIDATE_EMAIL)) {throw new InvalidArgumentException(sprintf('"%s" is not a valid email address',$email));}} }

?

Test Code

tests/EmailTest.php

<?php use PHPUnit\Framework\TestCase;final class EmailTest extends TestCase {public function testCanBeCreatedFromValidEmailAddress(){$this->assertInstanceOf(Email::class,Email::fromString('user@example.com'));}public function testCannotBeCreatedFromInvalidEmailAddress(){$this->expectException(InvalidArgumentException::class);Email::fromString('invalid');}public function testCanBeUsedAsString(){$this->assertEquals('user@example.com',Email::fromString('user@example.com'));} }

?

?

3、單元測試的特點(比如phpunit,java的junit)?

文件夾
test
測試函數

a、測試的代碼是在test文件夾下的,和源碼不是在同一個文件夾下

b、測試的類或者方法都加有test字樣

c、有一些常用的測試函數,比如:

assertTrue 為判斷是否真
assertFalse 為判斷是否假
assertGreaterThan為判斷是否大于
assertLessThanOrEqual判斷是否小于或等于
assertEquals為判斷是否相等

?

?

4、thinkphp如何添加單元測試?

手冊 雜項

thinkphp的開發手冊的雜項里面有教怎么使用單元測試,

thinkphp5的單元測試也是用的phpunit,這張圖可以說明

所以關于單元測試的具體方法可以去phpunit官方文檔里面看

?

5、thinkphp的單元測試如何運行?

命令行

我們可以直接在命令行下面運行單元測試

?

?

6、thinkphp是否安裝單元測試的依據是什么?

tests文件夾

看tp的根目錄下是否有tests文件夾

?

7、thinkphp單元測試手冊?

在開發手冊的評論下找到的

快速入門 · thinkphp單元測試手冊|thinkphp 單元測試|thinkphp 測試 · 看云
https://www.kancloud.cn/code7/tpunit/220874

?

?

二、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%;

?

參考:PHPUnit簡介及使用 - 浮.塵 - 博客園
https://www.cnblogs.com/kccdzz/p/6763735.html

?

?

三、第一次用 PHPUnit 寫測試就上手

一、什么是測試?測試的重要性?

開發者在撰寫程式的時候,程式不大可能會沒有問題,所以通常就需要驗證程式的執行是不是符合預期。測試程式能用來驗證程式程式的運作是不是正常的,并發現程式中的錯誤,以增加軟體品質。

下面是一個活動報名的系統:

這一個活動報名系統主要提供使用者報名活動,在報名活動內還有一些子功能,像是「限制活動報名人數」,如果是這一個子功能,該如何測試呢?

直覺想到可能就需要有 20 個以上的使用者,然后讓這個些使用者分別來報名活動,如果沒超過限制的人數,使用者就能繼續報名,反之,超過了限制人數的話,使用者就無法繼續報名了。說到這里,會覺得這是什么測試!

先分析一下,照上面的方法進行測試會有什么問題:

1.測試案例一多,會花太多時間
這時候,如果再增加報名截止日期的測試,這樣又需要再對報名功能測試一次。

2.改了程式碼之后,需要再做一次測試
日后維護時,會需要再次修改程式碼,但是,改了程式碼之后,該如何驗證修改后的程式運作上是沒問題的?所以,可能又要再次從頭做一次測試。

3.與其他程式混在一起測試
要執行報名功能的程式碼,要透過 view 的程式去呼叫。但是,這樣做測試的時候,如果測試失敗,就必須花時間去找出是報名的程式出問題,還是 view 程式。

那該如何解決這些問題呢?針對開發者來說,需要一個可以自動化、重復的、獨立的測試。

二、單元測試

單元測試是分別對程式的單元,例如:函式 (function)、方法 (method),進行測試,測試時會判斷單元的執行結果是不是有符合預期。

從上圖可以看到,撰寫了Event 類別提供了兩個方法,reserve()、unreserve(),也就是目標程式。
接著透過 EventTest 的兩個測試案例,testReserve() 與 testUnreserve() 分別來對 Event 類別中的兩個類別方法執行測試,測試的結果會在測試案例中驗證,如果驗證通過,表示測試就成功了!

單元測試能協助開發者什么?

1.確保單元的執行結果
這一點蠻覺得就可以了解到,單元測試能協助驗證目標程式的執行結果。

2.盡早發現程式中的錯誤
因為單元測試是在開發的時候就進行的,所以能發現程式中存在的問題。
沒使用單元測試的時候,寫好了一份程式,但是,這份程式碼需要與其他程式碼整合才有辦法運作。所以就需要等整個程式開發的差不多的時候,才能對程式進行測試,在測試出現問題的時候,會花許多時間來厘清是那一份程式導致的問題。
如果使用單元測試,就能在寫好了一份程式之后進行單元測試,而不用等到之后才對程式測試。

3.修改程式,更加有信心
程式寫好了,需要維護、修 bug,如果修改了程式碼后,能確定修改后的程式與之前的正常運作是一樣的嗎?單元測試能協助修改程式后,對程式執行測試,如果測試過了,表示程式的運作是正常的,測試失敗的話,可能需要再回頭修改程式。

4.測試即文件
在撰寫測試的時候,會對單元所提供的功能進行驗證,所以,除了能透過程式來了解單元的運作外,也能用所撰寫的單元測試來知道,被測試的單元有哪些運作及功能。
在開發的時候,會撰寫一些文件來作為軟體的文件,在實際上,有時候那些文件并不一定會隨著程式變更而修改,到后來會變成之前所做的文件跟程式是不同步的。
因為,單元測試的程式會對目標程式進行驗證,所以,測試能避免掉傳統文件所造成的程式與文件不同步的問題。

三、簡介 PHPUnit

PHPUnit 是 PHP 程式語言中最常見的單元測試 (unit testing) 框架,PHPUnit 是參考 xUnit 架構利用 PHP 實作出來。

為什么要使用 PHPUnit 來測試呢?雖然,要做單元測試可以自己寫程式來測試, 但是 PHPUnit 提供了一些測試時常用的 library 及解決測試時會遇到問題的方法,所以我們會使用 PHPUnit 來做單元測試。

參考:第一次用 PHPUnit 寫測試就上手(上) - Anlior的博客 - CSDN博客
https://blog.csdn.net/Anlior/article/details/78627134?locationNum=7&fps=1

?

?

?

四、Tp5 單元測試

先安裝composer,如之前電腦環境有安裝composer可跳過12步驟

?

1.打開php.ini,找到;extension=php_openssl.dll,去掉前面的分號,保存并重啟Apache即可。

2.百度搜索安裝Composer-Setup.exe

3.打開Git Bash

4.

?

5.安裝完成后項目目錄會多出一個tests文件夾

6.

?

7.單元測試方法,模型

8.結果顯示返回正確情況

返回錯誤情況

測試函數,更多測試請看幫助文檔

assertTrue 為判斷是否真
assertFalse 為判斷是否假
assertGreaterThan為判斷是否大于
assertLessThanOrEqual判斷是否小于或等于
assertEquals為判斷是否相等

tp5單元測試使用幫助文檔http://www.kancloud.cn/manual/thinkphp5/182511

?

參考:Tp5 單元測試 - liuxin_0725的專欄 - CSDN博客
https://blog.csdn.net/liuxin_0725/article/details/53215411

?

五、thinkphp5單元測試安裝及使用

1、安裝:命令行根目錄下運行安裝代碼

這后面或許不應該加 v1.0

?

擴展里面的phpunit

?

安裝前后擴展目錄vendor對比:

?

快速入門 · thinkphp單元測試手冊|thinkphp 單元測試|thinkphp 測試 · 看云
https://www.kancloud.cn/code7/tpunit/220874

?

?

?

?

?

總結

以上是生活随笔為你收集整理的PHPUnit简介及使用(thinkphp5的单元测试安装及使用)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。