gitlab ci 中 phpunit 测试通过但 job 仍失败,通常是因 symfony 的弃用警告(deprecation notices)被默认视为错误;可通过配置 `symfony_deprecations_helper` 环境变量或 phpunit.xml 全局禁用或降级处理。
在 GitLab CI 中,即使所有 PHPUnit 测试用例均显示 OK(如日志中 5 tests, 16 assertions),Job 仍可能以 exit code 1 失败——这往往不是测试逻辑失败,而是 Symfony 框架或其依赖组件(如 PHPUnit 自身、PharIo、DeepCopy)触发的 弃用警告(deprecation notices)被提升为错误 所致。
默认情况下,Symfony 的 symfony/deprecation-contract 和测试工具链会将弃用提示视为“可中断的异常”,尤其在 CI 环境中启用了严格错误报告(如 error_reporting = -1)时。正如你日志所示:
Other deprecation notices (2) 1x: The "PHPUnit\DeepCopy\TypeFilter\Spl\SplDoublyLinkedListFilter" class is considered final... 1x: Method "Iterator::current()" might add "mixed" as a native return type declaration... ERROR: Job failed: exit code 1
这些警告并非来自你的业务代码,而是底层测试库兼容性问题(例如 PHPUnit 9.5 与 PHP 8.0+ 类型系统演进的临时冲突),但在 CI 中被 Symfony 的 DeprecationErrorHandler 捕获并抛出异常,最终导致整个 job 进程退出码为 1。
✅ 解决方案:禁用或抑制弃用警告
推荐在项目根目录创建标准 phpunit.xml 配置文件(优先级高于命令行参数),内容如下:
test s
? 注意事项:
? 进阶建议(适配多版本 Symfony + PHP):
如你后续希望在 PHP 8.0 上分别测试 Symfony 5.4 和 6.0,可在 .gitlab-ci.yml 中利用 variables + composer create-project 实现动态环境构建,例如:
test:symfony-6.0-php8.0:
image: php:8.0
variables:
COMPOSER_ROOT_VERSION: "6.0.*"
before_script:
- curl -sS https://getcomposer.org/installer | php
- php composer.phar create-project symfony/skeleton:"$COMPOSER_ROOT_VERSION" . --no-interaction
- php composer.phar install
script:
- vendor/bin/simple-phpunit总之,弃用警告本身不会导致 PHPUnit 测试失败,但会被 Symfony 的测试错误处理器主动转为异常。正确配置 phpunit.xml 并设置 SYMFONY_DEPRECATIONS_HELPER,即可让 CI 准确反映真实测试结果,避免误报失败。
# php
# bootstrap
# git
# composer
# php8
# 处理器
# app
# 工具
# curl
# ai
# 环境变量
# symfony
# xml
# 命令行参数
# 继承
# gitlab
# 如你
# 进阶
# 最多
# 但在
# 适用于
# 可在
# 已在
# 可选
# 所示
# 可通过
相关文章:
表情包在线制作网站免费,表情包怎么弄?
建设网站制作价格,怎样建立自己的公司网站?
单页制作网站有哪些,朋友给我发了一个单页网站,我应该怎么修改才能把他变成自己的呢,请求高手指点迷津?
c# 在高并发下使用反射发射(Reflection.Emit)的性能
利用JavaScript实现拖拽改变元素大小
c++怎么实现高并发下的无锁队列_c++ std::atomic原子变量与CAS操作【详解】
宠物网站制作html代码,有没有专门介绍宠物如何养的网站啊?
如何在Tomcat中配置并部署网站项目?
如何挑选最适合建站的高性能VPS主机?
如何快速搭建高效WAP手机网站吸引移动用户?
开心动漫网站制作软件下载,十分开心动画为何停播?
如何通过智能用户系统一键生成高效建站方案?
中山网站制作网页,中山新生登记系统登记流程?
如何制作新型网站程序文件,新型止水鱼鳞网要拆除吗?
建站之星收费标准详解:套餐费用及年费价格表一览
南宁网站建设制作定制,南宁网站建设可以定制吗?
青岛网站设计制作公司,查询青岛招聘信息的网站有哪些?
北京专业网站制作设计师招聘,北京白云观官方网站?
儿童网站界面设计图片,中国少年儿童教育网站-怎么去注册?
制作表格网站有哪些,线上表格怎么弄?
宝塔新建站点报错如何解决?
建站ABC备案流程中有哪些关键注意事项?
家庭建站与云服务器建站,如何选择更优?
小视频制作网站有哪些,有什么看国内小视频的网站,求推荐?
5种Android数据存储方式汇总
韩国服务器如何优化跨境访问实现高效连接?
详解jQuery中基本的动画方法
长沙做网站要多少钱,长沙国安网络怎么样?
seo网站制作优化,网站SEO优化步骤有哪些?
专业网站制作服务公司,有哪些网站可以免费发布招聘信息?
赚钱网站制作软件,建一个网站怎样才能赚钱?是如何盈利的?
C++ static_cast和dynamic_cast区别_C++静态转换与动态类型安全转换
如何在万网ECS上快速搭建专属网站?
邀请函制作网站有哪些,有没有做年会邀请函的网站啊?在线制作,模板很多的那种?
如何选择网络建站服务器?高效建站必看指南
太原网站制作公司有哪些,网约车营运证查询官网?
建站之星免费版是否永久可用?
建站之星后台管理:高效配置与模板优化提升用户体验
制作销售网站教学视频,销售网站有哪些?
如何选择高效稳定的ISP建站解决方案?
安云自助建站系统如何快速提升SEO排名?
香港服务器如何优化才能显著提升网站加载速度?
无锡制作网站公司有哪些,无锡优八网络科技有限公司介绍?
小建面朝正北,A点实际方位是否存在偏差?
c++ stringstream用法详解_c++字符串与数字转换利器
手机钓鱼网站怎么制作视频,怎样拦截钓鱼网站。怎么办?
定制建站流程解析:需求评估与SEO优化功能开发指南
高防服务器租用如何选择配置与防御等级?
官网网站制作腾讯审核要多久,联想路由器newifi官网
焦点电影公司作品,电影焦点结局是什么?
*请认真填写需求信息,我们会在24小时内与您取得联系。