如何愉快的在PhpStorm中进行PHPUnit单元测试和Xdebug断点调试?
前言
- 如果你想做个接口测试,但并不想公开内部接口
- 如果你只是想对自己封装的某块代码做个小测试
- 如果你想要编写代码边调试,又不想操作
Postman
或前端的功能来调用API
- 本文暂时仅介绍在
Laravel
和Comoposer Library
项目中如何配置PHPUnit
参考文档
如何愉快的在PhpStorm中进行PHPUnit单元测试和Xdebug断点调试?https://segmentfault.com/a/11...
如何愉快的在PhpStorm中进行PHPUnit单元测试和Xdebug断点调试?https://blog.csdn.net/RobotYa...
——
PHPUnit 手册:http://www.phpunit.cn/manual/...
phpunit assert断言分类整理 :https://www.cnblogs.com/nings...
安装
Xdebug
-
请参考以下文章的
PHP 安装 Xdebug
章节如何愉快的在PhpStorm中进行Xdebug断点调试:https://segmentfault.com/a/11...
如何愉快的在PhpStorm中进行Xdebug断点调试:https://blog.csdn.net/RobotYa...
配置
配置 PhpStorm 的 PHP CLi
- 选择 File -> Setting
-
搜索
CLI
,左侧选择PHP
,点击+
新增一个 PHP 解释器。-
Windows
- 配置
php
执行程序 - 点击那个
同步的小图标
,如果看到successfully
就说明配置有效 - 指定 Xdebug 模块
- 配置
-
Ubuntu
-
配置 PHPUnit
-
选择 File -> Setting,搜索
test
,左侧选择Test Framework
,点击+
新增一个PHPUnit Local
。-
Composer Library 项目
- 选择第一项:使用
composer autoloader
导入配置 - 选择你项目下的
vendor/autoload.php
- 点击那个
同步的小图标
,如果看到successfully
就说明配置有效
- 选择第一项:使用
-

- Laravel 项目
- 选择第一项:使用 `composer autoloader` 导入配置
- 选择你项目下的 `bootstrap/autoload.php`(或者选项目下的 `vendor/autoload.php`)
- 点击那个 `同步的小图标`,如果看到 `successfully` 就说明配置有效

配置 phpunit.xml
- 在你的项目根目录下新建
phpunit.xml
文件(但奇怪的是我在PhpStorm
删除这个文件,也可以执行单元测试,猜测可能是phpunit.xml
配置文件是可选的)
<?xml version="1.0" encoding="UTF-8"?>
<!--bootstrap指定启动测试时, 先加载vendor/autoload.php-->
<phpunit backupGlobals="false"
backupStaticAttributes="false"
bootstrap="vendor/autoload.php"
colors="true"
convertErrorsToExceptions="true"
convertNoticesToExceptions="true"
convertWarningsToExceptions="true"
processIsolation="false"
stopOnFailure="false">
<!--testsuite指定测试文件的目录-->
<testsuite>
<directory suffix="Test.php">./tests</directory>
</testsuite>
<!--filter过滤依赖文件的位置-->
<filter>
<whitelist processUncoveredFilesFromWhitelist="true">
<directory suffix=".php">./src</directory>
</whitelist>
</filter>
</phpunit>
- 当然这个 phpunit.xml 只是基本配置,还有其他高级配置请自行百度
新增测试例
- 在你的项目根目录下新建
tests
目录 - 在
tests
目录下新建phpunit
测试类,以Test.php
为后缀 - 编写测试例方法,以
test
开头
<?php
/**
* Created by PhpStorm.
* User: robot
* Date: 2018/9/8
* Time: 23:54
*/
namespace HonorSdk\Tests;
use PHPUnit\Framework\TestCase;
class HelloTest extends TestCase
{
public function testHello()
{
$expect = 'hello world'; //期待结果
$result = $this->requestApi(); //请求api 或 调用 service 后返回的结果
$this->assertEquals($expect, $result); //使用断言方法 比较结果值
}
//假装请求数据
private function requestApi()
{
echo $date_1 = date('Y-m-d H:i:s');
echo "<br>";;
echo $date_2 = date('Y-m-d H:i:s');
echo "<br>";;
echo $date_3 = date('Y-m-d H:i:s');
echo "<br>";;
echo $date_4 = date('Y-m-d H:i:s');
echo "<br>";;
echo $date_5 = date('Y-m-d H:i:s');
echo "<br>";;
$j = 0;
for ($i = 0; $i < 10; $i++) {
$j = $i * 2;
$i = $i + 2;
echo $i;
echo "<br>";
echo $j;
echo "<br>";
}
return 'hello world';
}
}
- 打上断点,然后在要测试的方法名上右键,选择
Debug
这个方法 - 第一次可能会弹出让你选择测试范围的配置界面,这里我们只测试指定方法,所以选择了
Method
-
测试结果
- 测试例执行 Xdebug 的流程
- 测试例执行成功的返回信息
- 测试例执行 Xdebug 的流程
调试快捷键
-
F7
通过当前行,进入下一行,如果该行是方法,则进入方法体 -
F8
通过当前行,进入下一行,如果该行是方法,也直接进入下一行,不进入方法体 -
F9
通过整个流程,全部顺序执行,除非遇到下一个断点
要点总结
- 配置
PHP CLI
(php.exe
和xdebug.dll
) - 配置
PHPUnit
(autoload.php
) - 配置
phpunit.xml
(可选) - 新增
测试例
(测试类 和 测试方法)
RobotYang Share
[链接]
推荐阅读
如何使用 PHPStorm 进行优雅的项目开发?
PHP Storm 这个开发工具,很多 phper 应该有所耳闻,甚至也有不少人使用其作为生产工具,但是很多人都没有最大限度的使用它,本文就来总结一些优雅开发的小技巧。
唯一丶赞 45阅读 4.8k评论 7
怎样用 PHP 来实现枚举?
在数学和计算机科学理论中,一个集的枚举是列出某些有穷序列集的所有成员的程序,或者是一种特定类型对象的计数。这两种类型经常(但不总是)重叠。枚举是一个被命名的整型常数的集合,枚举在日常生活中很常见,...
唯一丶赞 25阅读 6.3k评论 4
Git操作不规范,战友提刀来相见!
年终奖都没了,还要扣我绩效,门都没有,哈哈。这波骚Git操作我也是第一次用,担心闪了腰,所以不仅做了备份,也做了笔记,分享给大家。问题描述小A和我在同时开发一个功能模块,他在优化之前的代码逻辑,我在开...
王中阳Go赞 5阅读 1.9k评论 2
微信公众号开发:自动回复文本/图片/图文消息/关键词回复/上传素材/自定义菜单
对接流程1、申请微信公众号测试账号URL:[链接]2、登录,配置开发者服务器URL和Token开发者服务器配置代码:config.php {代码...} URL是config.php在你服务器的URLToken是上面代码自己设置的Token搞定之后,就能完...
TANKING赞 2阅读 10k
Ajax实现搜索联想 搜索关键词提醒 无刷新搜索
通过javascript监听搜索框的内容,调用后端即可。(1)javascript监听搜索框的内容(2)把搜索框的关键词传给后端进行搜索(3)搜索到结果,遍历到页面
TANKING赞 1阅读 4.3k
Hyperf 3.0 发布,PHP 新时代
在过去的一年半时间里,Hyperf 2.2 共发布了 35 个小版本,使 Hyperf 达到了一个前所未有的高度,这里也获得了一些不错的数据反馈。
huangzhhui赞 3阅读 1.1k
多个著名 Go 开源项目被放弃,做大开源不能用爱发电,更不能只靠自己!
大家好,我是煎鱼。相信关注我的许多同学都有接触 Go 语言的开发,甚至在企业中多有实践。那么你在日常开发中,势必会接触到 gorilla 组织下的各个 Go 开源项目。如下图:gorilla/mux:Star:17.9k。a powerful r...
煎鱼赞 1阅读 2.3k
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。