本作品系 原创, 采用 《署名-非商业性使用-禁止演绎 4.0 国际》 许可协议
博文内容
前言
- 如果你想做个接口测试,但并不想公开内部接口
- 如果你只是想对自己封装的某块代码做个小测试
- 如果你想要编写代码边调试,又不想操作
Postman或前端的功能来调用API - 本文暂时仅介绍在
Laravel和Comoposer Library项目中如何配置PHPUnit
参考文档
如何愉快的在PhpStorm中进行PHPUnit单元测试和Xdebug断点调试?segmentfault.com/a/119000001… 如何愉快的在PhpStorm中进行PHPUnit单元测试和Xdebug断点调试?blog.csdn.net/RobotYang12… —— PHPUnit 手册:www.phpunit.cn/manual/curr… phpunit assert断言分类整理 :www.cnblogs.com/ningskyer/a…
安装
Xdebug
- 请参考以下文章的
PHP 安装 Xdebug章节如何愉快的在PhpStorm中进行Xdebug断点调试:segmentfault.com/a/119000001… 如何愉快的在PhpStorm中进行Xdebug断点调试:blog.csdn.net/RobotYang12…
配置
配置 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就说明配置有效
- 选择第一项:使用
- Composer Library 项目
配置 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(可选) - 新增
测试例(测试类 和 测试方法)
关于我的
个人简介
| 属性 | 属性值 |
|---|---|
| 昵称 | 大绵羊、大绵羊rbt、rbtyang、RobotYang |
| 格言 | 博观约取,厚积薄发;刻意练习、日益精进 |
| 后端 | Go、PHP、Python |
| 前端 | Vue、Angular、Uniapp、公众号、小程序 |
| 数据 | MySQL、Redis/Memcached、MongoDB |
| 博客 | CSDN 思否 掘金 简书 知乎 开源中国 订阅号(RobotYang123) |
期望赞赏
万水千山总是情,赞不赞赏都可行 ( ̄▽ ̄)~■干杯□~( ̄▽ ̄)
