pbootcms网站模板|日韩1区2区|织梦模板||网站源码|日韩1区2区|jquery建站特效-html5模板网

php單元測試phpunit入門實例教程

這篇文章主要介紹了php單元測試phpunit,結合實例形式分析了php單元測試phpunit的基本概念、使用方法及相關注意事項,需要的朋友可以參考下

本文實例講述了php單元測試phpunit。分享給大家供大家參考,具體如下:

這篇文章提供了一些phpunit官方教程沒有提到的信息,幫助初學者快速了解php單元測試,在phpunit官網提供了詳細的中文教程,可選多種格式下載

phpunit官網地址:https://phpunit.de/

何為單元測試:

指對軟件中的基本單元進行測試,如函數、方法等,以檢查其返回值或行為是否符合預期;實際中軟件是很復雜的,由許多組件構成,執行流程連貫在一起,要進行單元片段的測試,就需要為其提供執行上下文(或者說參數)和環境(比如打樁模擬一些對象)來運行,并監控其行為和返回值,為此我們就需要寫出做這件事情的程序代碼,這樣的代碼叫做測試用例,許多測試用例有機結合在一起形成一個整體的測試,又叫做測試套件,被測試的程序代碼叫做生產代碼。phpunit這個軟件就是用來幫助我們寫測試用例并進行測試的。

php的單元測試:phpunit

在其官網有詳細教程,這里介紹一些補充內容。

首先要明白phpunit軟件本身就是由php語言實現,其使用是通過命令行進行的,并不是通過瀏覽器訪問

明白這一點很重要,許多新人被卡在這里。很基礎也很簡單,但似乎沒怎么被提及

在官網下載后得到一個phar文件,關于phar歸檔文件的介紹可參見前面一篇文章PHP開發之歸檔格式phar文件概念與用法

請同時下載phpunit使用文檔,按照里面的安裝方法進行安裝,之后在命令行輸入以下命令:

phpunit --help

如果顯示出了幫助信息即安裝成功,在命令行當前目錄下建立一個測試用例為yunke.php,內容如下:

<?php
use PHPUnit\Framework\TestCase;
class yunkeTest extends TestCase
{
  public function testPushAndPop()
  {
    $stack = [];
    $this->assertEquals(0, count($stack));
    array_push($stack, 'foo');
    $this->assertEquals('foo', $stack[count($stack) - 1]);
    $this->assertEquals(1, count($stack));
    $this->assertEquals('foo', array_pop($stack));
    $this->assertEquals(0, count($stack));
  }
}
?>

然后在命令行輸入以下命令:

phpunit yunke

顯示如下內容:

PHPUnit 5.7.12 by Sebastian Bergmann and contributors.
.                                  1 / 1 (100%)
Time: 159 ms, Memory: 7.00MB
OK (1 test, 5 assertions)

恭喜,你已經成功運行了一個單元測試,第一行是作者信息(Sebastian Bergmann這個家伙很喜歡署名啊)

第二行以一個句點開始,表示所有測試成功通過

你可能會疑惑,上面的php代碼是怎么回事呢?

那就是一個測試用例,簡單的測試了一個數組操作,進行單元測試一般通過以下四步:

1. 針對生產代碼類 Class 的測試寫在類 ClassTest中。
2. ClassTest(通常)繼承自 PHPUnit\Framework\TestCase
3. 測試都是命名為 test* 的公用方法。也可以在方法的文檔注釋塊(docblock)中使用 @test 標注將其標記為測試方法。
4. 在測試方法內,類似于 assertEquals()這樣的斷言方法用來對實際值與預期值的匹配做出斷言判斷。

這里你可能會有幾個地方迷惑:

1、在注釋塊中使用的標注,php可以通過反射得到,程序可以利用得到的信息進行配置
2、上列中測試用例代碼里面的TestCase類來自哪里?并沒有被加載啊?
上文提到phpunit本身是用php語言寫成的,打包成了phar供使用,phar是可執行的,執行時首先執行包里面的存根文件stub

你可以按照上文云客的另外一篇phar帖子介紹的方法提取還原phpunit.phar包,或者使用phpstorm這樣的ide直接打開

在.phar/stub.php里你將看到存根代碼,TestCase類就是在存根代碼里面require的“phpunit yunke”這條命令行代碼將首先運行phpunit腳本,從存根文件開始執行,然后由phpunit加載測試用例代碼

可以看出程序并不是從測試用例腳本開始執行的,現在明白TestCase類哪里來的了吧

通過以上內容再配合官網文檔,新手應該可以順利入門了

更多關于PHP相關內容感興趣的讀者可查看本站專題:《PHP基本語法入門教程》、《PHP運算與運算符用法總結》、《php面向對象程序設計入門教程》、《PHP網絡編程技巧總結》、《php字符串(string)用法總結》、《php+mysql數據庫操作入門教程》及《php常見數據庫操作技巧匯總》

希望本文所述對大家PHP程序設計有所幫助。

【網站聲明】本站除付費源碼經過測試外,其他素材未做測試,不保證完整性,網站上部分源碼僅限學習交流,請勿用于商業用途。如損害你的權益請聯系客服QQ:2655101040 給予處理,謝謝支持。

相關文檔推薦

這篇文章主要介紹了PHP定義字符串的四種方式,非常不錯,具有參考借鑒價值,需要的朋友可以參考下
下面小編就為大家分享一篇php 替換文章中的圖片路徑,下載圖片到本地服務器的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
下面小編就為大家分享一篇PHP給源代碼加密的幾種方法匯總(推薦),具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
下面小編就為大家分享一篇php打開本地exe程序,js打開本地exe應用程序,并傳遞相關參數方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
這篇文章主要介紹了PHP類的反射來實現依賴注入過程以及相關知識點分享,對此有興趣的朋友跟著小編學習下吧。
php遍歷一個文件夾內的所有文件和文件夾,并刪除所有文件夾和子文件夾下的所有文件的代碼,通過遞歸方式實現達到清空一個目錄的效果。本文給大家分享實例代碼,需要的朋友參考
主站蜘蛛池模板: 上海冠顶工业设备有限公司-隧道炉,烘箱,UV固化机,涂装设备,高温炉,工业机器人生产厂家 | 液压油缸-液压缸厂家价格,液压站系统-山东国立液压制造有限公司 液压油缸生产厂家-山东液压站-济南捷兴液压机电设备有限公司 | 防堵吹扫装置-防堵风压测量装置-电动操作显示器-兴洲仪器 | 精密五金冲压件_深圳五金冲压厂_钣金加工厂_五金模具加工-诚瑞丰科技股份有限公司 | Brotu | 关注AI,Web3.0,VR/AR,GPT,元宇宙区块链数字产业 | 杜甫仪器官网|实验室平行反应器|升降水浴锅|台式低温循环泵 | 3d打印服务,3d打印汽车,三维扫描,硅胶复模,手板,快速模具,深圳市精速三维打印科技有限公司 | 衢州装饰公司|装潢公司|办公楼装修|排屋装修|别墅装修-衢州佳盛装饰 | 加中寰球移民官网-美国移民公司,移民机构,移民中介,移民咨询,投资移民 | 电动葫芦|环链电动葫芦-北京凌鹰名优起重葫芦 | 广州物流公司_广州货运公司_广州回程车运输 - 万信物流 | 高铝砖-高铝耐火球-高铝耐火砖生产厂家-价格【荣盛耐材】 | 刚性-柔性防水套管-橡胶伸缩接头-波纹管补偿器-启腾供水材料有限公司 | 大立教育官网-一级建造师培训-二级建造师培训-造价工程师-安全工程师-监理工程师考试培训 | 带式过滤机厂家_价格_型号规格参数-江西核威环保科技有限公司 | 无锡网站建设-做网站-建网站-网页设计制作-阿凡达建站公司 | 安徽合肥格力空调专卖店_格力中央空调_格力空调总经销公司代理-皖格制冷设备 | 上海单片机培训|重庆曙海培训分支机构—CortexM3+uC/OS培训班,北京linux培训,Windows驱动开发培训|上海IC版图设计,西安linux培训,北京汽车电子EMC培训,ARM培训,MTK培训,Android培训 | ALC墙板_ALC轻质隔墙板_隔音防火墙板_轻质隔墙材料-湖北博悦佳 | 沈阳网站建设_沈阳网站制作_沈阳网页设计-做网站就找示剑新零售 沈阳缠绕膜价格_沈阳拉伸膜厂家_沈阳缠绕膜厂家直销 | 智成电子深圳tdk一级代理-提供TDK电容电感贴片蜂鸣器磁芯lambda电源代理经销,TDK代理商有哪些TDK一级代理商排名查询。-深圳tdk一级代理 | 硫化罐-胶管硫化罐-山东鑫泰鑫智能装备有限公司 | 建筑消防设施检测系统检测箱-电梯**检测仪器箱-北京宇成伟业科技有限责任公司 | PU树脂_水性聚氨酯树脂_聚氨酯固化剂_聚氨酯树脂厂家_宝景化工 | 刑事律师_深圳著名刑事辩护律师_王平聚【清华博士|刑法教授】 | 手持式线材张力计-套帽式风量罩-深圳市欧亚精密仪器有限公司 | 送料机_高速冲床送料机_NC伺服滚轮送料机厂家-东莞市久谐自动化设备有限公司 | IP检测-检测您的IP质量 | 扬尘监测_扬尘监测系统_带证扬尘监测设备 - 郑州港迪科技有限公司 | 镀锌钢格栅_热镀锌格栅板_钢格栅板_热镀锌钢格板-安平县昊泽丝网制品有限公司 | 山东包装,山东印刷厂,济南印刷厂-济南富丽彩印刷有限公司 | VOC检测仪-甲醛检测仪-气体报警器-气体检测仪厂家-深恒安科技有限公司 | 实战IT培训机构_IT培训班选大学生IT技术培训中心_中公优就业 | 广州监控安装公司_远程监控_安防弱电工程_无线wifi覆盖_泉威安防科技 | 干洗店加盟_洗衣店加盟_干洗店设备-伊蔻干洗「武汉总部」 | 成都离婚律师|成都结婚律师|成都离婚财产分割律师|成都律师-成都离婚律师网 | 正压密封性测试仪-静态发色仪-导丝头柔软性测试仪-济南恒品机电技术有限公司 | 高压互感器,电流互感器,电压互感器-上海鄂互电气科技有限公司 | 电主轴,车床电磨头,变频制动电机-博山鸿达特种电机 | Dataforth隔离信号调理模块-信号放大模块-加速度振动传感器-北京康泰电子有限公司 | 沈阳液压泵_沈阳液压阀_沈阳液压站-沈阳海德太科液压设备有限公司 |