关于 testing-symfony
面向使用 Symfony 和 PHP 的团队,提供测试策略指南。内容围绕 Pest、PHPUnit、Playwright、Infection 和 PHPStan,涵盖后端、浏览器、变异及静态分析测试。
主要功能
- 01使用 Pest 进行单元与集成测试
- 02使用 Pest 和 Playwright 进行浏览器测试
- 03使用 Infection 进行变异测试
- 04使用 PHPStan Level 10 静态分析
- 05测试结构与覆盖率要求
适用场景
- 01规划 Symfony 后端测试套件
- 02添加基于浏览器的端到端测试
- 03通过变异测试衡量测试质量
- 04落实架构与静态分析规则
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ thebeardedbearsas/ claude-craft --skill testing-symfony安装后在 Claude Code 中输入/testing-symfony确认已加载。
附带文件REFERENCE.md
详细介绍
Symfony 8.1 / PHP 8.5 测试策略
版本: Symfony 8.1+ | PHP 8.5 | Pest 5 | PHPUnit 13 | Playwright
Pest 5(PHP 8.4+、PHPUnit 13)原生集成了浏览器测试(Playwright):无需再使用 Panther 进行 E2E 测试。Behat(4.x,仍在维护)依然适用于 Gherkin BDD;否则,建议使用描述性 Pest 测试。
2026 年推荐技术栈
| 类型 | 工具 | 用途 |
|---|---|---|
| 单元/集成 | Pest 5(PHPUnit 13、PHP 8.4+、架构测试) | Symfony 后端测试 |
| 浏览器/E2E | Pest 5 Browser Testing(原生 Playwright) | 集成式前端测试 |
| 变异测试 | Infection | 测试质量(MSI >= 80%) |
| 静态分析 | PHPStan Level 10 | 静态检查 |
来源: Pest 5 升级指南、Infection
不可妥协的要求
- 覆盖率 >= 80%(行 + 分支)
- 通过 Infection 达到变异分数指标(MSI)>= 80%
- PHPStan Level 10——不得使用未经说明的
mixed - 架构测试:领域不依赖基础设施
- 通过
doctrine/data-fixtures管理 Fixture——不得硬编码数据 - 每个测试均采用 AAA(Arrange-Act-Assert)模式
- 浏览器测试放在
tests/Browser/,单元测试放在tests/Unit/,功能测试放在tests/Feature/
按类型划分的检查清单
| 类型 | 验证 |
|---|---|
| 单元 | 完全隔离,不使用 DB,使用 Prophecy/Mockery 模拟对象 |
| 集成 | KernelTestCase,已加载 Fixture,使用测试 DB |
| 浏览器 | Pest 5 原生 Playwright,针对真实 UI 进行断言 |
| 架构 | pest()->arch()——命名空间、依赖关系、禁止项 |
| 变异测试 | vendor/bin/infection --threads=4,MSI >= 80 |
完整详情、代码示例、配置和检查清单:请参阅 REFERENCE.md
评论
支持 Markdown