#7004·phpunit

保证测试、测试套件和钩子方法被事件所包围

作者: sebastianbergmann创建于 2026年9月25日更新于 2026年9月26日
标签type/backward-compatibilityfeature/events

目前的行为 ### 测试和测试套件 以下序列是在使用 PHPUnit 13.3.5 并启用 --debug 选项的情况下观察到的,除了两行带有星号的行外,它们来自以下代码路径(事件名的 Test 和 Test Suite 前缀已删除):

情况 事件 缺失
测试通过、失败、出错、被跳过或被标记为不完整 Preparation Started、Prepared、结果、Finished (没有)
测试在 setUp() (或其他 "测试前" 方法) 中出错 Preparation Started、Before Test Method Called、Before Test Method Errored、Before Test Method Finished、Preparation Errored、Errored Finished
测试在 setUp() 中被跳过 Preparation Started、Before Test Method Called、Before Test Method Finished、Skipped Finished
未满足要求 (例如 #[RequiresPhp]) Preparation Started、Skipped Finished
测试依赖于未通过的测试 Skipped Preparation Started、Finished
测试依赖于不存在的测试* Errored Preparation Started、Finished
失败重复后剩余的重复 Skipped Preparation Started、Finished
测试套件在 setUpBeforeClass() 中被跳过 Started、Before First Test Method Called、Skipped Finished
setUpBeforeClass() 出错 Started、Before First Test Method Errored、Before First Test Method Finished、Finished (类的测试没有事件)

这些情况是由以下代码路径引起的:

  • PHPUnit\Framework\TestRunner\TestRunner::run() 仅在 $test->wasPrepared() 返回 true 时才发出 Test\Finished 事件。
  • PHPUnit\Framework\TestCase::markSkippedForMissingDependency()、markErroredForInvalidDependency() 和 markSkippedForRepeatAbort() 会为未通过的重复发出结果。

内容来源: sebastianbergmann/phpunit