如何使用composer scripts来运行项目的单元测试和集成测试
发布时间 - 2025-10-02 00:00:00 点击率:次答案:通过 Composer scripts 可统一 PHP 项目测试入口,定义 test、test-unit 和 test-integration 脚本运行全部、单元和集成测试,结合 phpunit.xml 配置与 @group 注解分类测试,提升团队协作效率和项目可维护性。
在 PHP 项目中,Composer 不只是依赖管理工具,它还支持通过 scripts 来定义常用命令,比如运行单元测试和集成测试。合理使用 Composer scripts 可以简化开发流程,让团队成员用统一方式执行测试。
定义 test 和 tests 脚本
打开项目的 composer.json 文件,在 "scripts" 部分添加测试命令。通常我们会为单元测试和集成测试分别设置脚本:
"scripts": {
"test": "phpunit --configuration phpunit.xml",
"test-unit": "phpunit --configuration phpunit.xml --group unit",
"test-integration": "phpunit --configuration phpunit.xml --group integration"
}
说明:
- test:默认运行全部测试
- test-unit:只运行标记为 unit 的测试
- test-integration:只运行标记为 integration 的测试
确保你的 phpunit.xml 配置文件已正确设置测试目录和组别。
给测试打上 Group 标签
在 PHPUnit 中,使用 @group 注解来分类测试。例如:
/**
* @group unit
*/
class UserTest extends TestCase
{
public function testCanCreateUser()
{
// 单元测试逻辑
}
}
/**
- @group integration */ class UserServiceTest extends TestCase { public function testCanSaveUserToDatabase() { // 集成测试逻辑 } }
运行测试命令
保存 composer.json 后,就可以用 Composer 执行测试:
- composer test:运行所有测试
- composer test-unit:只运行单元测试
- composer test-integration:只运行集成测试
这些命令会自动调用本地安装的 phpunit(推荐通过 composer require --dev phpunit/phpunit 安装)。
扩展:添加脚本钩子或组合命令
你还可以在脚本中串联多个操作,比如先清理缓存再运行测试:
"scripts": {
"test": "composer test-unit && composer test-integration",
"test-ci": "phpunit --configuration phpunit.xml --coverage-clover build/logs/clover.xml"
}
test-ci 适合在 CI 环境中使用,生成代码覆盖率报告。
基本上就这些。通过 Composer scripts 统一测试入口,不仅提升可维护性,也让新成员更容易上手项目。不复杂但容易忽略。
# php
# js
# json
# composer
# 工具
# 配置文件
# require
# xml
# 单元测试
# 多个
# 可以用
# 你还
# 更容易
# 会为
# 它还
# 让新
# jpg
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
开心动漫网站制作软件下载,十分开心动画为何停播?
如何在云主机快速搭建网站站点?
浅析上传头像示例及其注意事项
Laravel Sail是什么_基于Docker的Laravel本地开发环境Sail入门
JavaScript如何实现倒计时_时间函数如何精确控制
高端企业智能建站程序:SEO优化与响应式模板定制开发
极客网站有哪些,DoNews、36氪、爱范儿、虎嗅、雷锋网、极客公园这些互联网媒体网站有什么差异?
Laravel Fortify是什么,和Jetstream有什么关系
Laravel如何处理跨站请求伪造(CSRF)保护_Laravel表单安全机制与令牌校验
Python进程池调度策略_任务分发说明【指导】
如何在万网自助建站中设置域名及备案?
Laravel事件和监听器如何实现_Laravel Events & Listeners解耦应用的实战教程
如何在香港免费服务器上快速搭建网站?
Laravel怎么集成Vue.js_Laravel Mix配置Vue开发环境
如何用IIS7快速搭建并优化网站站点?
Win11怎么关闭资讯和兴趣_Windows11任务栏设置隐藏小组件
标准网站视频模板制作软件,现在有哪个网站的视频编辑素材最齐全的,背景音乐、音效等?
Laravel如何实现一对一模型关联?(Eloquent示例)
Laravel如何实现本地化和多语言支持_Laravel多语言配置与翻译文件管理
Laravel如何实现登录错误次数限制_Laravel自带LoginThrottles限流配置【方法】
网站建设整体流程解析,建站其实很容易!
高端建站三要素:定制模板、企业官网与响应式设计优化
如何在阿里云香港服务器快速搭建网站?
Laravel怎么实现前端Toast弹窗提示_Laravel Session闪存数据Flash传递给前端【方法】
如何自定义建站之星模板颜色并下载新样式?
Laravel怎么做数据加密_Laravel内置Crypt门面的加密与解密功能
电商网站制作多少钱一个,电子商务公司的网站制作费用计入什么科目?
Win10如何卸载预装Edge扩展_Win10卸载Edge扩展教程【方法】
香港服务器网站卡顿?如何解决网络延迟与负载问题?
PHP 实现电台节目表的智能时间匹配与今日/明日轮播逻辑
百度输入法全感官ai怎么关 百度输入法全感官皮肤关闭
移动端手机网站制作软件,掌上时代,移动端网站的谷歌SEO该如何做?
QQ浏览器网页版登录入口 个人中心在线进入
原生JS获取元素集合的子元素宽度实例
网站制作免费,什么网站能看正片电影?
mc皮肤壁纸制作器,苹果平板怎么设置自己想要的壁纸我的世界?
Laravel Facade的原理是什么_深入理解Laravel门面及其工作机制
音响网站制作视频教程,隆霸音响官方网站?
如何用y主机助手快速搭建网站?
JS实现鼠标移上去显示图片或微信二维码
Swift开发中switch语句值绑定模式
如何快速打造个性化非模板自助建站?
,网页ppt怎么弄成自己的ppt?
深圳防火门网站制作公司,深圳中天明防火门怎么编码?
小米17系列还有一款新机?主打6.9英寸大直屏和旗舰级影像
Laravel如何生成URL和重定向?(路由助手函数)
Java遍历集合的三种方式
网站制作壁纸教程视频,电脑壁纸网站?
北京专业网站制作设计师招聘,北京白云观官方网站?
如何用PHP工具快速搭建高效网站?


group 注解分类测试,提升团队协作效率和项目可维护性。