如何为我的Composer包编写自动化测试并集成CI?(GitHub Actions示例)


为 Composer 包配置自动化测试与 CI 的核心是:编写 PHPUnit 测试、配置 phpunit.xml.dist、在 GitHub Actions 中定义多 PHP 版本测试工作流,确保测试类命名规范、自动加载正确、CI 中声明 dev 依赖。

如何为我的composer包编写自动化测试并集成ci?(github actions示例)

为 Composer 包编写自动化测试并接入 CI,核心是三件事:写好 PHPUnit 测试、配置 phpunit.xmlphpunit.xml.dist、在 GitHub Actions 中定义 PHP 测试工作流。下面分步说明。

1. 确保项目结构支持测试

标准 Composer 包应包含 src/(源码)、tests/(测试用例)和 composer.json。测试文件通常与源码一一对应,比如 src/Helper.php 对应 tests/HelperTest.php,类名以 Test 结尾,继承 PHPUnitFrameworkTestCase

安装测试依赖:

composer require --dev phpunit/phpunit ^10

如果使用较新 PHP 版本(如 8.2+),推荐 PHPUnit 10;若需兼容 PHP 7.4,可用 PHPUnit 9。

2. 编写可运行的测试用例

tests/ 下创建测试类,例如 tests/CalculatorTest.php

<?php
use PHPUnitFrameworkTestCase;
<p>class CalculatorTest extends TestCase
{
public function testAddReturnsCorrectResult(): void
{
$this->assertSame(5, 2 + 3);
}
}

确保 composer.json 中定义自动加载规则,让测试能加载源码:

"autoload": {
    "psr-4": {
        "MyVendor\MyPackage\": "src/"
    }
},
"autoload-dev": {
    "psr-4": {
        "MyVendor\MyPackage\Tests\": "tests/"
    }
}

运行测试前执行:composer dump-autoload,保证命名空间解析正确。

3. 配置 PHPUnit 并验证本地运行

在项目根目录创建 phpunit.xml.dist

FaceSwapper FaceSwapper

FaceSwapper是一款AI在线换脸工具,可以让用户在照片和视频中无缝交换面孔。

FaceSwapper 960 查看详情 FaceSwapper
<?xml version=&quot;1.0" encoding="UTF-8"?>
<phpunit xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:noNamespaceSchemaLocation="https://schema.phpunit.de/10.5/phpunit.xsd"
         bootstrap="vendor/autoload.php"
         colors="true"
         verbose="true">
    <testsuites>
        <testsuite name="default">
            <directory>tests/</directory>
        </testsuite>
    </testsuites>
</phpunit>

然后终端执行:./vendor/bin/phpunit。看到绿色 OK 表示测试就绪。

4. 添加 GitHub Actions 工作流

在项目根目录新建 .github/workflows/test.yml

name: Test Package
<p>on: [push, pull_request]</p><p>jobs:
test:
runs-on: ubuntu-latest
strategy:
matrix:
php-version: ['8.1', '8.2', '8.3']</p><pre class="brush:php;toolbar:false;">steps:
  - uses: actions/checkout@v4

  - name: Setup PHP
    uses: shivammathur/setup-php@v2
    with:
      php-version: ${{ matrix.php-version }}
      extensions: mbstring, xml, curl
      coverage: none

  - name: Install dependencies
    run: composer install --no-interaction --prefer-dist

  - name: Run tests
    run: vendor/bin/phpunit --testdox

该流程会:

  • 在 PHP 8.1/8.2/8.3 上分别运行测试
  • 自动拉取代码、安装扩展、安装 Composer 依赖
  • --testdox 输出易读的测试报告

提交后,GitHub 会自动触发检查,失败时 PR 页面显示红叉,点击可查看详细日志。

不复杂但容易忽略:记得在 composer.jsonrequire-dev 中声明 phpunit/phpunit,否则 CI 安装依赖时可能漏掉它;另外,测试类文件名必须以 Test.php 结尾,且类名匹配,否则 PHPUnit 默认扫描不到。

以上就是如何为我的Composer包编写自动化测试并集成CI?(GitHub Actions示例)的详细内容,更多请关注php中文网其它相关文章!


# 自动加载  # 抖音搜索seo老刘  # 店铺类目seo设置  # qq营销推广软件哪个好  # 外贸营销推广软件代理  # 苏州网站优化账号是什么  # 青岛seo惠宙斯放心  # 井陉矿区竞价网站推广技巧  # 电力网站建设路  # 市场营销推广日历  # 电影联合营销推广伙伴  # 解决问题  # 中文网  # 相关文章  # 如何在  # php  # 内存不足  # 如何使用  # 如何解决  # 工作流  # 为我  # curl  # ubuntu  # github  # composer  # json  # git  # bootstrap  # js 


相关栏目: 【 Google疑问12 】 【 Facebook疑问10 】 【 优化推广96088 】 【 技术知识133117 】 【 IDC资讯59369 】 【 网络运营7196 】 【 IT资讯61894


相关推荐: 申通快件单号查询平台 申通包裹物流动态跟踪  Animex动漫社正版在线入口 Animex动漫社动漫官方观看网  Sublime Text怎么关闭自动完成_Sublime禁用Auto Complete设置  酷狗音乐多音轨设置教程  C++ virtual析构函数作用_C++基类虚析构函数防止内存泄漏  163邮箱登录入口官网 163.com邮箱登录入口  告别阻塞等待:如何使用GuzzlePromises优雅处理PHP异步操作,提升应用响应速度  如何测试您的网站全球打开速度-网站海外测速工  c++类和对象到底是什么_c++面向对象编程基础  Win10怎么设置快速启动 Win10开启快速启动设置方法  《友玩*》创建群聊方法  睡觉时心跳快是什么原因 夜间心悸如何应对  PHP使用DOMDocument与XPath精准追加XML元素教程  口腔诊所管理软件推荐  漫蛙漫画官方版直通入口 2025漫蛙漫画免注册访问说明  J*a中为什么强调组合优于继承_组合模式带来的灵活性与可维护性解析  《饿了么》拼好饭点外卖教程2025  J*aScript实现网页表单实时输入字段比较与验证教程  《随手记》关闭首页消息推送方法  《磁力猫》最好用的磁官网  BunnyStream TUS视频上传指南:解决401认证错误与参数配置  PDF文件去水印平台入口 PDF水印删除网址  申通快递查询 申通物流快递单实时查询入口  WPS文字如何进行简繁转换  Python项目中的条件导入:解决跨模块依赖问题  漫蛙漫画直连入口 _ manwa官方备用入口实时检测  《大学搜题酱》官网地址登录  创建快捷方式启动系统保护  解决CSS布局中意外顶部空白问题的教程  iPhone 13 mini如何清理Safari缓存_iPhone 13 mini浏览器缓存清理方法  Final Cut Pro视频加EQ教程  支付宝如何解绑云闪付_支付宝与云闪付账户关联解除方法  excel怎么计算平均值 excel平均函数*ERAGE使用教学  VS Code如何设置默认配置  《伊瑟》凶影追缉库卢鲁boss攻略  苹果手机缓存怎么清除_苹果手机缓存如何清除iphone各版本操作步骤  《新三国志曹操传》游历事件袁尚突围攻略  极兔快递官网查询入口手机版 手机极兔快递登录查询入口官方  126手机126邮箱登录_126邮箱手机登录入口官网  全球各国上班时间表外贸邮件时间  MacBook Pro词典使用指南  PHP odbc_fetch_array 返回值处理:如何正确访问嵌套数组元素  百度小说看书时如何翻页_百度小说手动翻页与自动翻页设置  Excel如何快速找到并断开外部数据源链接_Excel外部数据源断开方法  海棠阅读网页版_进入海棠网页版在线阅读中心  怎么恢复删除的电脑文件_数据恢复软件使用教程  ToDesk远程摄像头功能使用方法_ToDesk远程视频画面查看设置教程  excel怎么制作考勤表 excel考勤模板与函数公式讲解  悟空浏览器如何恢复关闭的标签页 悟空浏览器撤销关闭网页快捷键设置  Flash AS3.0简易相册制作 

 2025-12-19

了解您产品搜索量及市场趋势,制定营销计划

同行竞争及网站分析保障您的广告效果

点击免费数据支持

提交您的需求,1小时内享受我们的专业解答。

运城市盐湖区信雨科技有限公司


运城市盐湖区信雨科技有限公司

运城市盐湖区信雨科技有限公司是一家深耕海外推广领域十年的专业服务商,作为谷歌推广与Facebook广告全球合作伙伴,聚焦外贸企业出海痛点,以数字化营销为核心,提供一站式海外营销解决方案。公司凭借十年行业沉淀与平台官方资源加持,打破传统外贸获客壁垒,助力企业高效开拓全球市场,成为中小企业出海的可靠合作伙伴。

 8156699

 13765294890

 8156699@qq.com

Notice

We and selected third parties use cookies or similar technologies for technical purposes and, with your consent, for other purposes as specified in the cookie policy.
You can consent to the use of such technologies by closing this notice, by interacting with any link or button outside of this notice or by continuing to browse otherwise.