Skip to content
Merged
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Next Next commit
Fix ITestSkippedEventReceiver not firing for [Skip]-attributed tests
RegisterReceivers was only called inside PrepareTest, which runs after
skip checks. When a test was skipped via [Skip("...")] attribute, the
EventReceiverRegistry global flags were never set, causing the
InvokeTestSkippedEventReceiversAsync fast-path to short-circuit.

Move RegisterReceivers call to ExecuteTestInternalAsync before any skip
checks so attribute-based event receivers are registered early enough
for OnTestSkipped to fire.

Fixes #5252
  • Loading branch information
thomhurst committed Mar 26, 2026
commit beedbce300395fe3b6292bc7c21743aec836523e
4 changes: 4 additions & 0 deletions TUnit.Engine/Services/TestExecution/TestCoordinator.cs
Original file line number Diff line number Diff line change
Expand Up @@ -61,6 +61,10 @@ private async ValueTask ExecuteTestInternalAsync(AbstractExecutableTest test, Ca

_contextRestorer.RestoreContext(test);

// Register event receivers early so that skip event receivers work
// even when the test is skipped before full initialization.
_eventReceiverOrchestrator.RegisterReceivers(test.Context, cancellationToken);

// Check if test was already marked as skipped during registration
// (e.g., by a derived SkipAttribute evaluated in OnTestRegistered).
// This must be checked before any instance creation or retry/timeout logic.
Expand Down
Loading