SuperAPI AI 工具集

testing-symfony

测试与质量

查看项目

更新于 10-15 16:58

技能介绍

用途

该技能面向 Symfony 8.1 / PHP 8.5 项目的测试工作,用于在编写测试、审查测试覆盖率或搭建测试体系时提供统一的策略与规范。

版本与工具栈

资料标注的版本为:Symfony 8.1+、PHP 8.5、Pest 5、PHPUnit 13、Playwright。

推荐的 2026 技术栈按类型划分:

  • 单元/集成测试:Pest 5(PHPUnit 13、PHP 8.4+、架构测试),用于 Symfony 后端测试。
  • 浏览器/E2E 测试:Pest 5 Browser Testing(原生 Playwright),用于集成的前端测试。
  • 变异测试:Infection,用于评估测试质量(MSI ≥ 80%)。
  • 静态分析:PHPStan Level 10,用于静态检查。

资料说明 Pest 5(PHP 8.4+、PHPUnit 13)原生集成了浏览器测试(Playwright),因此 E2E 不再需要 Panther。Behat(4.x,仍在维护)仍适用于 BDD Gherkin;否则建议优先使用描述性的 Pest 测试。

不可妥协的约束

  • 覆盖率 ≥ 80%(行与分支)。
  • 通过 Infection 达到变异分数指标(MSI)≥ 80%。
  • PHPStan Level 10,不允许无理由的 mixed。
  • 架构测试:领域层独立于基础设施。
  • 夹具通过 doctrine/data-fixtures 提供,不使用硬编码数据。
  • 每个测试采用 AAA(Arrange-Act-Assert)模式。
  • 浏览器测试放在 tests/Browser/,单元测试放在 tests/Unit/,功能测试放在 tests/Feature/。

各测试类型的检查清单

  • 单元测试:完全隔离,不使用数据库,使用 Prophecy/Mockery 进行 mock。
  • 集成测试:使用 KernelTestCase,加载夹具,使用测试数据库。
  • 浏览器测试:Pest 5 原生 Playwright,对真实 UI 进行断言。
  • 架构测试:使用 pest()->arch(),检查命名空间、依赖与禁止项。
  • 变异测试:运行 vendor/bin/infection --threads=4,MSI ≥ 80。

使用方式与更多细节

资料指出完整的细节、代码示例、配置与检查清单参见 REFERENCE.md。除此之外,资料未提供具体的安装命令、配置代码或分步操作说明。

适用场景

适用于 Symfony 8.1 / PHP 8.5 项目的测试编写、测试覆盖率审查以及测试环境搭建。

限制

资料未提供该技能的收费、价格、平台支持范围或实际效果等信息。