You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PHPUnit中使用dd()导出变量触发子进程意外终止问题问询

问题原因

Drupal 9 默认对功能测试、内核测试、浏览器测试类启用进程隔离机制,每个测试用例会在独立的子进程中执行。dd() 函数底层依赖 die()/exit() 终止程序运行,会直接中断子进程执行,导致 PHPUnit 主进程无法接收预期的测试结束回执,因此抛出「Test was run in child process and ended unexpectedly」错误。
你在其他项目可以正常使用 dd(),是因为普通 PHP 项目的 PHPUnit 默认没有开启进程隔离配置。

可行解决方案
  • 方案1:临时关闭当前测试类的进程隔离
    在你需要调试的测试类中添加如下属性,调试完成后删除即可:
    protected $runTestInSeparateProcess = false;
    
    注意:关闭进程隔离可能存在全局变量、服务容器污染的问题,仅适合调试阶段使用。
  • 方案2:替换为不终止进程的打印方法
    用 dump() 函数代替 dd(),dump() 仅会输出变量内容不会终止程序,测试执行完成后变量内容会正常展示在 PhpStorm 的测试结果控制台中。如果需要打印后停止测试执行,可在dump()后添加$this->fail('调试主动终止');即可正常拿到输出结果。
  • 方案3:使用断点调试替代打印调试
    配置Xdebug后在对应位置打断点,无需修改代码即可查看所有变量的上下文信息,调试效率比dd()更高。

内容的提问来源于stack exchange,提问作者Jimmyb_1991

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 22:48:04