如何在Symfony 4与Simple-PHPUnit中调试测试?含PHPStorm操作指引
我之前在Symfony 4项目里研究过Simple-PHPUnit的调试方案,把亲测有效的步骤整理给你,不管是用IDE界面还是命令行都能搞定:
一、先搞定PHPStorm的基础调试配置
这是前提,得先让PHPStorm和Xdebug、Simple-PHPUnit对接上:
- 确保你的PHP环境已经开启Xdebug(可以通过
php -v查看是否有Xdebug的输出,要是没开,去php.ini里配置开启,端口默认用9003就行) - 打开PHPStorm的
Settings/Preferences,找到Languages & Frameworks > PHP > Test Frameworks- 点击左上角的加号,选择
PHPUnit by Remote Interpreter,关联你项目对应的PHP解释器 - 在
PHPUnit library区域,选Use Composer autoloader,然后指定项目根目录下的vendor/autoload.php - 必须配置:把
Default configuration file设为项目根目录的phpunit.xml.dist(或者你自定义的phpunit.xml) - 最后找到
Simple-PHPUnit的路径,指定为vendor/bin/simple-phpunit,保存配置
- 点击左上角的加号,选择
二、通过PHPStorm界面调试任意单元测试
这个是最直观的方式,适合单个测试方法或类的调试:
- 打开你要调试的测试文件(比如
tests/Controller/YourControllerTest.php) - 在需要断点的代码行左边点击,打一个红色断点
- 右键点击测试方法名,选择
Debug 'testYourMethod',或者点击文件右上角的调试按钮,就能直接启动调试会话,和调试普通PHP代码一样,单步调试、查看变量都没问题
三、用
vendor/bin/simple-phpunit命令行调试特定测试 有时候需要指定某个测试类甚至单个方法调试,命令行更灵活:
- 先打开PHPStorm的Xdebug倾听模式:点击右上角的电话图标,变成绿色就代表正在监听
- 打开终端,进入项目根目录,执行以下命令(替换成你自己的测试路径和方法名):
这里的XDEBUG_SESSION=PHPStorm vendor/bin/simple-phpunit tests/Service/YourServiceTest.php::testYourSpecificMethodXDEBUG_SESSION=PHPStorm是告诉Xdebug把调试请求发送给PHPStorm,后面的路径和方法名就是你要精准调试的目标 - 执行命令后,PHPStorm会弹出提示询问是否接受调试连接,点击
Accept就能进入调试流程,断点会正常触发
小贴士:如果命令行调试没触发断点,检查下xdebug的
idekey是不是设成了PHPStorm,可以在php.ini里添加xdebug.idekey=PHPStorm,然后重启PHP服务试试
内容的提问来源于stack exchange,提问作者eRIZ
相关产品推荐
相关产品推荐

