用途:本技能提供 PHPUnit 测试框架的约定与实践,在任务涉及编写测试、配置 PHPUnit、数据提供器、断言、测试替身或测试审查时使用。核心原则是测试行为而非实现,测试即可执行文档。
主要能力:涵盖测试结构与命名(*Test.php、final 类、test 前缀或 #[Test])、Arrange-Act-Assert 三段式、测试粒度与隔离、fixture 生命周期(setUp/tearDown、setUpBeforeClass/tearDownAfterClass、#[Before]/#[After]);数据提供器(#[DataProvider]、#[TestWith]、命名数据集、生成器提供器,提供器须为 public static,禁止空提供器);断言 API(优先 assertSame、字符串与浮点断言、异常与弃用期望);测试替身(createStub 与 createMock 的区别、返回值配置、调用匹配、MockBuilder);PHP 8 属性(测试元数据、跳过条件、覆盖率、fixture、行为控制);测试组织与目录结构、测试套件;phpunit.xml 配置与代码覆盖率。
使用方式:按项目现有测试风格应用约定,不逐条叙述规则;审查测试时指出具体问题并给出内联修复。运行子集可用 phpunit --testsuite unit、phpunit --group slow;覆盖率需 PCOV 或 Xdebug,命令为 phpunit --coverage-html build/coverage --coverage-clover build/clover.xml。
适用场景:PHP 项目的单元测试与集成测试编写、PHPUnit 配置、测试重构与审查。
限制:所有模式面向 PHPUnit 11+ 与 PHP 8.5+,仅使用 PHP 8 属性,注解在 11 中已弃用、12 中移除;数据提供器不得包含 mock 对象或复杂对象图;不要在桩上调用 expects()。资料未提供安装命令、收费与价格信息。