保证测试、测试套件和钩子方法被事件所包围
作者: 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