新闻中心
如何通过Composer脚本(scripts)自动执行PHPUnit测试?(自动化配置)
在 composer.json 的 scripts 中配置 PHPUnit 命令(如 "test": "phpunit"),可实现 composer test 一键运行测试;需先以 --dev 安装 phpunit/phpunit,配置 phpunit.xml,并支持 verbose、coverage、CI 等多场景脚本。

在 Composer 的 composer.json 中配置 PHPUnit 测试脚本,能让测试像运行命令一样简单——比如直接执行 composer test 就自动跑完所有用例,无需记住完整路径或参数。
1. 确保 PHPUnit 已正确安装
推荐以开发依赖方式安装 PHPUnit(兼容现代版本):
- PHP 8.1+ 项目建议用 PHPUnit 10.x:
composer require --dev phpunit/phpunit:^10 - 安装后检查是否可执行:
./vendor/bin/phpunit --version - 确保项目根目录下有
phpunit.xml或phpunit.xml.dist配置文件(定义测试目录、引导文件、覆盖率等)
2. 在 composer.json 的 scripts 段添加测试命令
编辑 composer.json,在 "scripts" 下加入自定义脚本:
"scripts": {
"test": "phpunit",
"test-verbose": "phpunit --verbose",
"test-cover": "phpunit --coverage-html coverage"
}
说明:
立即学习“PHP免费学习笔记(深入)”;
NameGPT
免费的名称生成器,AI驱动在线生成企业名称及Logo
119
查看详情
-
"test"是最简调用,Composer 会自动查找并执行./vendor/bin/phpunit - 如果 PHPUnit 二进制不在默认路径,可写绝对路径:
"test": "vendor/bin/phpunit" - 支持组合命令,例如先清理再测试:
"test": "rm -rf coverage/ && phpunit --coverage-html coverage"(Linux/macOS) - Windows 用户可用
cmd /c包裹,或改用 cross-env 工具保证兼容性
3. 支持不同环境或场景的快捷脚本
按需扩展更多语义化命令:
-
"test-unit":只跑单元测试(配合--testsuite Unit和 phpunit.xml 中的 suite 配置) -
"test-ci":CI 环境专用,输出 JUnit 格式供流水线解析:"phpunit --log-junit phpunit-report.xml" -
"test-dry":仅检查配置是否有效,不真正执行:"phpunit --list-tests --no-configuration"
4. 运行与集成技巧
保存 composer.json 后即可使用:
- 运行测试:
composer test - 查看详细输出
:composer test-verbose - 结合其他脚本串联:
composer run-script test && composer run-script post-test - Git Hook 自动触发:用 husky 或 simple-git-hooks,在 pre-commit 中加
composer test,失败则中断提交
基本上就这些。关键是让脚本名直观、行为可预期,再配合好 phpunit.xml 配置,就能把测试真正“自动化”进日常开发流里。
以上就是如何通过Composer脚本(scripts)自动执行PHPUnit测试?(自动化配置)的详细内容,更多请关注php中文网其它相关文章!
# 命令行
# 高薪聘请seo
# 品牌网站优化价钱怎么算
# 武威网站的推广
# 朔州网站建设做网站
# 日照网站建设方案费用
# 移动云建设网站费用
# 建设厅安监局网站
# 湛江网站建设与推广公司
# 网站建设技术路线怎么写
# 网站建设答辩ppt内容
# 能让
# 中文网
# 相关文章
# 未来
# 器上
# php
# 回调
# 如何解决
# 如何在
# 运行环境
# win
# macos
# mac
# 工具
# windows
# composer
# json
# git
# js
# html
# linux
相关栏目:
【
科技资讯46185 】
【
网络学院92790 】
相关推荐:
Archive of Our Own官网直达 AO3最新可用地址一览
处理动态列数据:J*a ArrayList的正确初始化与字符累加教程
智慧团建扫码登录入口 智慧团建扫码登录入口官网版
海量存储:机器视觉智能化的核心基石
Safari自带网页翻译功能怎么用 无需插件轻松看懂外文网站【方法】
印象笔记怎样用批量导出备知识库_印象笔记用批量导出备知识库【备份方法】
妖精漫画网页版登录入口免费_妖精漫画官网主页直接阅读漫画
css元素hover动画延迟生效怎么办_使用animation-delay调整触发时间
J*a里如何实现订单支付与库存同步功能_支付库存同步项目开发方法说明
学习通在线学习平台 学习通网页版直接进入课程中心
如何在网页中实现特定地点的随机图片展示
《燕云十六声》两周内达九百万玩家!位居畅销榜第五
AO3最新镜像入口 Archive of Our Own官方平台访问
高德地图怎么看全景照片_高德地图全景照片浏览教程
AO3镜像入口大全 AO3网页版内容访问全集
Win11如何开启讲述人功能 Win11屏幕阅读器(讲述人)开启与关闭【教程】
win11 arm版怎么安装 M1/M2 Mac虚拟机安装ARM win11的方法
海棠账号登录入口_登录海棠账户同步阅读记录
J*aScript类型检查_j*ascript代码规范
谷歌google账号怎么注册账号 谷歌账号注册官方流程
J*a实现学校排课程序_面向对象结构化项目示例
中兴Axon42Ultra怎样在文件App筛图_iPhone中兴Axon42Ultra文件App筛图【图片筛选】
TikTok国际版官网直达_TikTok国际版官网直达进入在线观看
Golang如何实现Web文件静态资源服务器_Golang静态资源服务器开发与实践
Typer应用中动态命令行参数的解析与处理
网站内容防复制粘贴的实现策略与局限性
Discord Slash 命令响应超时问题的异步解决方案
谷歌浏览器最新官方入口链接 谷歌浏览器网页版官网导航
星露谷物语官网入口 星露谷物语游戏官网入口
MAC的“快捷指令”怎么同步到iPhone_MAC利用iCloud同步所有设备的自动化指令
vivo浏览器怎么扫描二维码 vivo浏览器内置扫一扫功能使用方法
在Blazor WebAssembly应用中动态注入客户端特定指标代码的策略
深入理解Google Cloud Datastore查询:祖先路径与数据一致性
微博网页版首页入口 微博电脑端官网登录链接
QQ邮箱网页版入口 QQ邮箱官方邮箱登录通道
C++如何实现一个智能指针_手动实现C++ shared_ptr的引用计数功能
从OpenAI API响应中高效提取生成文本
文心一言怎样用插件调度API数据_文心一言用插件调度API数据【API调用】
海棠电脑版入口_通过电脑访问海棠官网阅读
C++如何实现单例模式_C++设计模式之线程安全的单例写法
在FastAPI中利用lifespan与依赖注入高效管理Redis连接池
KFC套餐升级怎么获取优惠代码_KFC套餐升级活动与优惠代码获取方法
内存检查:在VS Code中调试C++时的内存视图
解决 Express.js 中 PUT 请求密码修改失败的路由配置指南
Golang如何实现微服务鉴权与权限控制_Golang微服务鉴权与权限管理实践
美团外卖商家服务中心入口 美团商家版官网入口
怎样使用“本地安全策略”提升Windows安全性_Secpol.msc配置指南【高手】
iwriter统一登录平台 iwrite账号密码登录页面
利用5118提升短视频内容效果_5118短视频关键词优化方法
AI泡沫首次被“刺破”:GPU十年都无法存活!


2025-12-14
浏览次数:次
返回列表
: