PHP单元测试配置与使用方法详解


Posted in PHP onDecember 27, 2019

本文实例讲述了PHP单元测试配置与使用方法。分享给大家供大家参考,具体如下:

php与其他语言不太一样,单元测试需要自己安装和配置,相对麻烦一点,不过单元测试对于提高库的稳定性和健壮性还是非常给力的,下面教大家怎么配置PHP单元测试

注意:php需升级到7.1版本以上

配置说明

1.全局安装phpunit命令脚本

$ wget https://phar.phpunit.de/phpunit-7.0.phar
$ chmod +x phpunit-7.0.phar
$ sudo mv phpunit-7.0.phar /usr/local/bin/phpunit
$ phpunit --version
PHPUnit x.y.z by Sebastian Bergmann and contributors.

2.全局安装安装phpunit代码

composer global require phpunit/phpunit

3.创建 phpunit.xml放在你的项目根目录, 这个文件是 phpunit 会默认读取的一个配置文件:

<phpunit bootstrap="vendor/autoload.php">
  <testsuites>
    <testsuite name="service">
      <directory>tests</directory>
    </testsuite>
  </testsuites>
</phpunit>

4.配置phpstorm单元phpunit.phar路径,Languages & Frameworks > PHP > PHPUinit

如我的phpunit本地的路径为/usr/local/bin/phpunit

PHP单元测试配置与使用方法详解

5.配置单元测试类提示,Languages & Frameworks > PHP > include path

如我的phpunit包本地的路径为/Users/chenqionghe/.composer/vendor/phpunit

PHP单元测试配置与使用方法详解

6.单元测试编写

1.Class为Demo的测试类为DemoTest

2.测试类继承于 PHPUnit\Framework\TestCase

3.测试方法

  • 必须为public权限,
  • 一般以test开头,也可以给其加注释@test来标识
  • 在测试方法内,类似于 assertEquals() 这样的断言方法用来对实际值与预期值的匹配做出断言。
<?php
use Eoffcn\Utils\Arrays;
use PHPUnit\Framework\TestCase;
/**
 * Array测试用例
 * Class ArraysTest
 */
class ArraysTest extends TestCase
{
  public function testGet()
  {
    $array = [
      1 => [
        'b' => [
          'c' => 'cqh'
        ]
      ],
      2 => [
        'b' => [
          'c' => 'cqh'
        ] ]
    ];
    $this->assertEquals('cqh', Arrays::get($array, '1.b.c'));
  }
}

执行单元测试

 

1.执行单个文件单元测试

Phpstorm方式,当前测试类右键Run即可

PHP单元测试配置与使用方法详解

命令行的方式,进行项目目录执行

phpunit tests/ArraysTest.php

PHP单元测试配置与使用方法详解

2.执行全局单元测试

phpstorm方式

 PHP单元测试配置与使用方法详解

PHP单元测试配置与使用方法详解

命令行方式,命令行下进入当前项目执行

phpunit

PHP单元测试配置与使用方法详解

希望本文所述对大家PHP程序设计有所帮助。

PHP 相关文章推荐
基于php常用函数总结(数组,字符串,时间,文件操作)
Jun 27 PHP
PHP中$_SERVER的详细参数与说明介绍
Oct 26 PHP
mac下安装nginx和php
Nov 04 PHP
PHP父类调用子类方法的代码例子
Apr 09 PHP
php中的curl_multi系列函数使用例子
Jul 29 PHP
php+mysql结合Ajax实现点赞功能完整实例
Jan 30 PHP
php基于ob_start(ob_gzhandler)实现网页压缩功能的方法
Feb 18 PHP
CodeIgniter框架基本增删改查操作示例
Mar 23 PHP
PHP和MYSQL实现分页导航思路详解
Apr 11 PHP
PHP实现求解最长公共子串问题的方法
Nov 17 PHP
thinkPHP框架实现类似java过滤器的简单方法示例
Sep 05 PHP
PHP正则匹配到2个字符串之间的内容方法
Dec 24 PHP
PHP全局使用Laravel辅助函数dd
Dec 26 #PHP
解决php用mysql方式连接数据库出现Deprecated报错问题
Dec 25 #PHP
PHP高并发和大流量解决方案整理
Dec 24 #PHP
thinkphp5实现微信扫码支付
Dec 23 #PHP
PHP实现笛卡尔积算法的实例讲解
Dec 22 #PHP
PHP架构及原理知识点详解
Dec 22 #PHP
Laravel 验证码认证学习记录小结
Dec 20 #PHP
You might like
DC游戏Steam周三特惠 《蝙蝠侠》阿卡姆系列平史低
2020/04/09 欧美动漫
PHP面向对象概念
2011/11/06 PHP
深入PHP内存相关的功能特性详解
2013/06/08 PHP
Php-Redis安装测试笔记
2015/03/05 PHP
Laravel5.3+框架定义API路径取消CSRF保护方法详解
2020/04/06 PHP
Bootstrap精简教程中秋大放送
2016/09/15 Javascript
canvas实现简易的圆环进度条效果
2017/02/28 Javascript
你应该知道的几类npm依赖包管理详解
2017/10/06 Javascript
原生JS实现 MUI导航栏透明渐变效果
2017/11/07 Javascript
微信小程序自定义底部弹出框
2020/11/16 Javascript
解决vue接口数据赋值给data没有反应的问题
2018/08/27 Javascript
js html实现计算器功能
2018/11/13 Javascript
浅谈express.js框架中间件(middleware)
2019/04/07 Javascript
vue路由守卫,限制前端页面访问权限的例子
2019/11/11 Javascript
Vue退出登录时清空缓存的实现
2019/11/12 Javascript
vue 实现动态路由的方法
2020/07/06 Javascript
Vue实现腾讯云点播视频上传功能的实现代码
2020/08/17 Javascript
js基于canvas实现时钟组件
2021/02/07 Javascript
[01:08:24]DOTA2-DPC中国联赛 正赛 RNG vs Phoenix BO3 第一场 2月5日
2021/03/11 DOTA
详解Django框架中的视图级缓存
2015/07/23 Python
Python ftp上传文件
2016/02/13 Python
Python实现冒泡排序的简单应用示例
2017/12/11 Python
基于OpenCV python3实现证件照换背景的方法
2019/03/22 Python
实例详解Python模块decimal
2019/06/26 Python
Python改变对象的字符串显示的方法
2020/08/01 Python
基于Python的一个自动录入表格的小程序
2020/08/05 Python
css3中用animation的steps属性制作帧动画
2019/04/25 HTML / CSS
日语专业推荐信
2013/11/12 职场文书
教师档案管理制度
2014/01/23 职场文书
党课知识竞赛主持词
2014/04/01 职场文书
《棉鞋里的阳光》教学反思
2014/04/24 职场文书
2014年精神文明建设工作总结
2014/11/19 职场文书
计划生育工作总结2015
2015/04/03 职场文书
四大名著读书笔记
2015/06/25 职场文书
新西兰:最新留学学习计划书写作指南
2019/07/15 职场文书
win11如何查看端口是否被占用? Win11查看端口是否占用的技巧
2022/04/05 数码科技