Inline .Because() reason in assertion error messages #4086
Closed
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Description
The
.Because()reason string now appears inline with the "Expected" line instead of at the bottom of assertion errors, eliminating the need to expand test output to see context.Before:
After:
Changes
Assertion<TValue>.CreateException(): Appends because message to expectation before formatting error messageAndAssertion/OrAssertion.BuildCombinedExpectation(): Includes because messages inline for each assertion in chainsRelated Issue
Fixes #4118
Type of Change
Checklist
Required
TUnit-Specific Requirements
TUnit.Core.SourceGenerator) - N/A: assertion formatting onlyTUnit.Engine) - N/A: assertion formatting onlyTUnit.Core.SourceGenerator.Testsand/orTUnit.PublicAPItests.received.txtfiles and accepted them as.verified.txt.verified.txtfiles[DynamicallyAccessedMembers]annotationsdotnet publish -p:PublishAot=trueTesting
dotnet test)Additional Notes
All 1,370 assertion tests pass. The existing
BecauseTestssuite validates behavior across simple assertions, And chains, and Or chains.Original prompt
✨ Let Copilot coding agent set things up for you — coding agent works faster and does higher quality work when set up for your repo.