Skip to content

Исключения

Каждый сценарий падения — типизированное исключение с readonly-полями или геттерами, сгенерированное из ReflectionClass по всем @api-типам в src/, а не переписанное из прозы. README называет их по имени; эта страница — справочник по полям.

ИсключениеКогда бросаетсяПоля / геттеры
PropertyViolationExceptionСлучайный или explicit-прогон фальсифицировал property.getCounterExample(): CounterExample
RegressionViolationExceptionРеплей values-записи из корпуса регрессий всё ещё падает.getArguments(): array, getSeed(): int
ExampleViolationExceptionПадает явный пример. Сообщается как есть — без shrink'а.getIndex(): int (позиция в списке примеров), getArguments(): array
GaveUpExceptionЧисло отброшенных попыток (Assume::that()) превысило maxDiscards до набора runs успешных проверок.$propertyName: string, $requiredRuns: int, $successfulRuns: int, $discardedRuns: int, $attempts: int, $maxDiscards: int
DeadlineExceededExceptionОдин прогон превысил timeoutMs. Сообщается как есть — без shrink'а.$propertyName: string, $arguments: array, $elapsedMs: float, $timeoutMs: int
TimeBudgetExceededExceptionВся random-фаза превысила budgetMs до набора runs успешных проверок.$propertyName: string, $budgetMs: int, $elapsedMs: float, $successfulRuns: int, $requiredRuns: int
GenerationExhaustedGen::filter() отверг 100 кандидатов подряд, либо sized-коллекция (uniqueArrayOf/dictOf/commands) не смогла достичь $min в рамках бюджета попыток.$arbitrary: string, $attempts: int
CoverageViolationExceptionНе выполнено требование Classify::cover() — даже если все прогоны прошли.Маркерное исключение, без дополнительных полей.
PostconditionViolationCommand::postCondition() вернул false (или бросил) во время StateMachine::check().$trace: array, $step: int, $command: Command, $model: mixed, $result: mixed

Не часть контракта

AssumptionSkipped — публичный класс в корневом namespace пакета, но без тега @api: это внутренний сигнал control-flow, который бросает Assume::that(false) для прерывания текущей попытки, перехватываемый интерцептором до того, как доберётся до вашего теста. Не ловите его и не стройте на нём логику — в будущем релизе способ сигнализировать об отбрасывании может измениться внутренне.

Сгенерировано проходом рефлексии по всем @api-типам в src/ (docs/scripts/reflect-api.php) — как это остаётся синхронным с исходниками, см. обзор API.