应配置 github actions 工作流:在 .github/workflows/test.yml 中定义触发器、用 shivammathur/setup-php@v2 设置匹配的 php 版本及扩展、通过 php-actions/composer@v6 安装依赖、用 secrets 注入环境变量、执行 composer dump-autoload 和 vendor/bin/phpunit。

如果您已编写好 PHP 单元测试脚本,但尚未在代码提交后自动执行,则可能是由于 GitHub Actions 工作流未正确配置或环境不匹配。以下是实现 PHP 持续集成并自动运行测试脚本的具体步骤:
一、创建标准工作流文件
GitHub Actions 通过 YAML 文件定义自动化流程,该文件必须置于项目根目录下的 .github/workflows/ 子目录中,且需以 .yml 或 .yaml 为扩展名,否则无法被识别和触发。
1、在项目根目录下依次创建文件夹:.github → workflows。
2、在 .github/workflows 目录中新建文件,命名为 test.yml。
3、将基础工作流结构粘贴至该文件,确保包含 on: push 和 on: pull_request 触发器。
4、确认文件顶部声明 name: PHP Tests,便于在 Actions 界面中快速识别任务类型。
二、显式配置 PHP 运行环境
Ubuntu runner 默认不预装 PHP,也未启用常见扩展;若仅依赖系统默认版本,极易因 ext-mbstring、ext-xml 或 ext-zip 缺失导致 composer install 失败或测试中断。
1、在 steps 列表中添加 shivammathur/setup-php@v2 Action。
2、通过 with: php-version 指定与 composer.json 中 require.php 完全一致的版本号,例如 '8.2'(不可简写为 '8')。
3、在 extensions 字段中显式列出全部必需扩展,至少包括 mbstring, xml, zip, curl, gd, pdo。
4、添加 coverage: none 参数避免 Xdebug 启用干扰性能。
三、安全安装 Composer 依赖
直接使用系统包管理器安装 Composer 易引入老旧版本或扩展兼容问题;GitHub Actions 中应通过专用 Action 获取稳定、匹配当前 PHP 版本的 Composer 可执行文件,并规避交互提示与 dev 包干扰。
1、选用 php-actions/composer@v6 而非手动 curl 安装。
2、在 composer install 命令中强制添加参数:--no-interaction --prefer-dist --optimize-autoloader。
3、若项目含私有 Git 仓库依赖,在 composer install 步骤前插入命令:composer config github-oauth.github.com ${{ secrets.GITHUB_TOKEN }}。
4、检查 composer.json 的 config.platform.php 是否与 workflow 中声明的 PHP 版本完全一致,否则 Composer 将模拟错误平台解析依赖。
四、注入敏感环境变量
.env 文件不应提交至仓库,但测试常需数据库连接、API 密钥等配置;若直接复制 .env.example,会导致占位符值引发连接失败。必须通过 GitHub Secrets 安全注入,并确保每个 run 步骤均可读取。
1、进入仓库 Settings → Secrets and variables → Actions → New repository secret,创建如 DB_URL、APP_KEY 等密钥。
2、在 workflow 的 env 块中全局注入:DB_URL: ${{ secrets.DB_URL }}。
3、若测试框架(如 PHPUnit)需从 .env 文件读取,改用 run: echo "DB_URL=${{ secrets.DB_URL }}" >> .env 动态生成。
4、添加调试步骤:run: cat .env,确认变量写入无空行、无乱码、无引号包裹。
五、执行并验证测试命令
测试命令是否生效,取决于 autoload 是否正确加载、测试路径是否被识别、以及 PHPUnit 是否能访问全部依赖;本地通过不代表 CI 环境可复现,尤其当存在大小写路径映射错误或 classmap 权威性缺失时。
1、确保 composer.json 中 autoload-dev 正确声明测试命名空间,例如:"Tests\": "tests/"。
2、在 tests/ 目录下建立 Tests/ 子目录,使类路径与命名空间严格匹配。
3、测试前执行:composer dump-autoload --optimize --classmap-authoritative,强制刷新映射并排除缓存干扰。
4、运行测试命令:vendor/bin/phpunit,不加任何参数以覆盖全部测试套件;若需指定配置文件,使用 --configuration phpunit.xml。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











