日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > php >内容正文

php

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

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

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

一、總結(jié)

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

官網(wǎng)地址:https://phpunit.de/getting-started-with-phpunit.html

?

1、為什么要用PHPUnit?

測試性能

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

2、可以測試性能

3、可以測試代碼覆蓋率

4、可以自動化的更新測試用例的參數(shù)數(shù)據(jù)

5、各種格式的日志

?

2、官方phpunit使用實(shí)例?

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、單元測試的特點(diǎn)(比如phpunit,java的junit)?

文件夾
test
測試函數(shù)

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

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

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

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

?

?

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

手冊 雜項(xiàng)

thinkphp的開發(fā)手冊的雜項(xiàng)里面有教怎么使用單元測試,

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

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

?

5、thinkphp的單元測試如何運(yùn)行?

命令行

我們可以直接在命令行下面運(yùn)行單元測試

?

?

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

tests文件夾

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

?

7、thinkphp單元測試手冊?

在開發(fā)手冊的評論下找到的

快速入門 · 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、可以自動化的更新測試用例的參數(shù)數(shù)據(jù)

5、各種格式的日志

三、PHPUnit使用規(guī)則

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

2、測試類ArrayTest繼承于PHPUnit_Framework_TestCase

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

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

?

快速入門:

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

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

// 斷言數(shù)組$fixture中元素的數(shù)目是0。
$this->assertEquals(0, sizeof($fixture));
}
/**
* @test
*/
public function testarrayHasKey()
{
$arr = array(
'id'=>666,
'name'=>'zhangsan',
);
//斷言$arr是一個數(shù)組
$this->assertTrue(is_array($arr));
//斷言數(shù)組$arr中含有索引id
$this->assertArrayHasKey('id',$arr);
//斷言數(shù)組$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設(shè)置需要測試的代碼路徑或文件

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

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

通過執(zhí)行命令:phpunit --coverage-html ./coverage ./src/test

命令解釋:

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

覆蓋率結(jié)果:

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

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

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

通過執(zhí)行命令:phpunit?--coverage-text ./src/test > test.log

命令解釋:

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

覆蓋率結(jié)果:

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

覆蓋率計(jì)算問題:

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

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

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

?

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

?

?

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

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

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

下面是一個活動報(bào)名的系統(tǒng):

這一個活動報(bào)名系統(tǒng)主要提供使用者報(bào)名活動,在報(bào)名活動內(nèi)還有一些子功能,像是「限制活動報(bào)名人數(shù)」,如果是這一個子功能,該如何測試呢?

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

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

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

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

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

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

二、單元測試

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

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

單元測試能協(xié)助開發(fā)者什么?

1.確保單元的執(zhí)行結(jié)果
這一點(diǎn)蠻覺得就可以了解到,單元測試能協(xié)助驗(yàn)證目標(biāo)程式的執(zhí)行結(jié)果。

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

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

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

三、簡介 PHPUnit

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

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

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

?

?

?

四、Tp5 單元測試

先安裝composer,如之前電腦環(huán)境有安裝composer可跳過12步驟

?

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

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

3.打開Git Bash

4.

?

5.安裝完成后項(xiàng)目目錄會多出一個tests文件夾

6.

?

7.單元測試方法,模型

8.結(jié)果顯示返回正確情況

返回錯誤情況

測試函數(shù),更多測試請看幫助文檔

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、安裝:命令行根目錄下運(yùn)行安裝代碼

這后面或許不應(yīng)該加 v1.0

?

擴(kuò)展里面的phpunit

?

安裝前后擴(kuò)展目錄vendor對比:

?

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

?

?

?

?

?

總結(jié)

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

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 免费成人av在线播放 | 国产精品网站入口 | 亚洲精品色午夜无码专区日韩 | 欧美性xxxxxx| 性色av一区二区三区免费 | 噼里啪啦国语版在线观看 | 91社区视频| 国产亚洲二区 | 成人黄色一级视频 | 大号bbwassbigav女 | 射影院 | 视频区图片区小说区 | 久久精品亚洲精品 | 夜夜操av| 国产伦精品一区二区三区高清 | 黄色高清网站 | 国产做爰免费观看视频 | 亚洲精品一区二区三区蜜桃久 | 色吧婷婷 | 亚洲欧美精品一区二区三区 | 欧美日韩中文字幕在线观看 | 91极品视觉盛宴 | 日本美女全裸 | 日本黄色一级 | 91porn九色 | 713电影免费播放国语 | 96福利视频 | 依人成人网 | 欧美日韩亚洲国产 | 久久精品无码中文字幕 | 久久成人资源 | 亚洲欧美动漫 | 欧美福利一区二区三区 | 泰剧19禁啪啪无遮挡 | www.久久99 | 一区二区三区午夜 | 69久久久久 | 瑟瑟视频在线免费观看 | 不卡影院一区二区 | aaaaaaa毛片| 日韩欧美中字 | 婷婷激情小说网 | 91视频网址 | 丁香花完整视频在线观看 | 久久艹国产 | 午夜aaa片一区二区专区 | 亚洲视频综合网 | 在线观看av中文字幕 | 又黄又免费的网站 | 国产情侣免费视频 | 日本视频三区 | 在线免费观看毛片 | 婷婷伊人综合中文字幕 | 91红桃视频| 色综合久久精品亚洲国产 | 中文精品一区二区三区 | 日韩不卡视频一区二区 | 伊人影院在线观看视频 | 精品美女久久久久 | 亚洲色图丝袜 | 国产又粗又猛又黄又爽的视频 | 亚洲一区二区小说 | 日本一区二区三区在线观看视频 | 久草视频2| 亚洲图片欧美另类 | 婷婷爱五月 | 国内成人在线 | 欧美一区二区三区成人 | 亚洲国产成人91porn | 国产一区二区三区在线免费观看 | 97福利网 | 不卡免费视频 | 亚洲女女做受ⅹxx高潮 | 伊人久久精品一区二区三区 | 成人在线手机视频 | 人人妻人人藻人人爽欧美一区 | 97se亚洲综合| 伊人伦理 | 国产精品美女www爽爽爽视频 | ktv做爰视频一区二区 | 日韩特黄一级片 | 色成人综合 | 干一夜综合 | 日本亲近相奷中文字幕 | 少妇愉情理伦片bd | 无码精品人妻一区二区三区湄公河 | 亚洲一区二区激情 | 麻豆传媒一区二区三区 | 男女激情网站 | 亚洲精品福利视频 | 国产乱人乱偷精品视频a人人澡 | 亚洲av无码一区二区三区在线 | 中日韩午夜理伦电影免费 | 中文字幕av免费在线观看 | 脱美女衣服亲摸揉视频 | 久久成年人 | 久久99精品国产麻豆91樱花 | 91插插插插插插插插 | 国产一区精品在线 |