Move the test runner to Microsoft.Testing.Platform - #41
Merged
Conversation
xunit.v3 4.0 drops the VSTest path on the .NET 10 SDK, so taking it means opting into the MTP mode of `dotnet test`: a `test.runner` entry in global.json, `--project`/`--solution` instead of a bare path, and filters expressed as MTP options after a `--`. xunit.runner.visualstudio is the VSTest adapter and is no longer referenced. One behaviour changes. The integration project is no longer filtered out of the ordinary test pass, because under MTP an assembly that matches no tests fails the run rather than printing a note. It is discovered and skips itself for want of a credential, which also means a break in that project now surfaces in CI rather than at release. Verified against the pre-migration run, per assembly rather than on the total: Authentication 107, CodeGen 105, Contract 62, Tests 177, Webhooks 64, and the package pass 39 — every one unchanged, with integration adding a single skip. The three failure modes behind the design were reproduced first: excluding integration fails the run, dropping the filter pulls the 39 package tests back in, and a mistyped option name errors rather than quietly passing. This also removes the Dependabot ignore rule added for the major, which was its stated exit condition. Co-authored-by: kkdev92 <kkdev92@users.noreply.github.com> Co-authored-by: Claude Opus 5 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
xunit.v3 4.0 drops the VSTest path on the .NET 10 SDK, which is why Dependabot's bump (#35) could
not be merged. Taking it means opting into the MTP mode of
dotnet test.What changes
global.jsongainstest.runnerdotnet testtakes--project/--solutionrather than a bare path, and filters become MTPoptions after a
--:--filter-not-trait Category=Packagein place of--filter "Category!=Integration&Category!=Package"xunit.runner.visualstudiois the VSTest adapter and is no longer referencedci.yml,release.yml,integration.yml, and in every command printed inthe README, CONTRIBUTING, the pull request template and
docs/compatibility.mdThe one behaviour that changes
The integration project is no longer filtered out of the ordinary test pass. Under MTP an assembly
that matches no tests fails the run rather than printing a note, so excluding it would turn CI
red. It is discovered and skips itself for want of a credential — which also means a break in that
project surfaces in CI rather than at release.
Verification
Compared against the pre-migration run per assembly, not on the total, since a total can match
while assemblies shift:
dotnet formatand the generated-source verification are unchanged and green.The three failure modes the design rests on were reproduced before relying on them:
Category=IntegrationThat last one matters most: a filter that is silently ignored looks exactly like a filter that
works.
--filter "Category!=Package"is accepted and ignored under MTP, which is the trap thiswas checked against.
This also removes the Dependabot ignore rule added in #39, which named this migration as its exit
condition.
🤖 Generated with Claude Code