ThinkPHP5与单元测试PHPUnit使用详解
thinkphp5.0是tp发展路线第一个支持composer的。tp有自己的载入机制,composer也有自己的载入机制。
官方提供了think-testing组件可以通过composerrequiretopthink/think-testing1.*安装,但我对这个测试组件不是很满意,原因是它每个测试都是模拟成http请求。这也就意味着对于一些特定函数,还得封装到控制器中或者路由,该控制器还得控制它生产环境不能对外开放。thinkphp5.0是tp发展路线第一个支持composer的。tp有自己的载入机制,composer也有自己的载入机制。
PHPUnit 是一个用PHP编程语言开发的开源软件,是一个单元测试框架。PHPUnit由SebastianBergmann创建,源于KentBeck的SUnit,是xUnit家族的框架之一。
单元测试是对单独的代码对象进行测试的过程,比如对函数、类、方法进行测试。单元测试可以使用任意一段已经写好的测试代码,也可以使用一些已经存在的测试框架,比如JUnit、PHPUnit或者Cantata++,单元测试框架提供了一系列共同、有用的功能来帮助人们编写自动化的检测单元,例如检查一个实际的值是否符合我们期望的值的断言。单元测试框架经常会包含每个测试的报告,以及给出你已经覆盖到的代码覆盖率。
总之一句话,使用 phpunit 进行自动测试,会使你的代码更健壮,减少后期维护的成本,也是一种比较标准的规范,现如今流行的PHP框架都带了单元测试,如Laraval,Symfony,Yii2等,单元测试已经成了标配。
另外,单元测试用例是通过命令操控测试脚本的,而不是通过浏览器访问URL的。
项目内安装PHPUnit
使用 composer 方式安装PHPUnit项目根目录下执行下面这段代码
composerrequirephpunit/phpunit
自动下载适配版本 我下载的时4.8.36
将F:\wamp\wamp\www\tp5\vendor\bin 添加加到PATH环境变量中(这样PHPunit全局生效)
PHPUnit简单用法
1、单个文件测试
根目录下创建目录tests
新建文件 FirstTest.php,编辑如下:
assertEquals(0,count($stack)); } }
代码解释:
FirstTest为测试类FirstTest继承于 PHPUnit\Framework\TestCase测试方法testTure(),测试方法必须为public权限,一般以test开头,或者你也可以选择给其加注释@test来表在测试方法内,类似于 assertEquals() 这样的断言方法用来对实际值与预期值的匹配做出来以此判断方法是否正确
命令行执行:
tests目录下执行 >phpunitFirstTest 命令测试文件命名
测试项目内方法
tp5项目下的控制器在 F:\wamp\wamp\www\tp5\application\index\controller文件夹下写一个简单的方法
在tests内写一个IndexTest.php
assertEquals(6,$obj->index(2,3)); } }
执行后的结果 成功!
如果我在index.php,和IndexTest.php都故意写错
返回结果 会有错误位置
其他用法
其他用法请参考官网:PHPUnit中国官网
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。