chore(deps): update xUnit.net v3 to 4.0
Nobody has claimed this yet.
Assessment
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Newbie friendliness
- 48/100
- Issue type
- Refactor
- Clarity
- Clearly specified
- Activity status
- Active
- Tech stack
- csharp, github-actions
- Domain
- build-system, testing
Research direction
Start with root Directory.Packages.props, tests/Directory.Build.props, and .github/workflows/build-library.yml; check the xUnit 4 migration notes and the test runner configuration. Search for the listed ordering and parallelism APIs, then run dotnet restore, dotnet build, and dotnet test. Done means CI and coverage work, all tests remain discovered, and the deferred MTP migration has a follow-up issue.
Written by the indexing model from the issue text.
Description
Part 5 of the outdated-package sweep (dotnet-outdated 4.8.1, 2026-11-05). Major upgrade of the xUnit.net v3 framework.
Current state
Root Directory.Packages.props:
xunit.v33.2.2,xunit.v3.core3.2.2,xunit.v3.assert3.2.2 -> 4.0.2xunit.runner.visualstudio3.1.5 -> 4.0.1
tests/Directory.Build.props: test projects are OutputType=Exe, reference Microsoft.NET.Test.Sdk, xunit.v3, XUnit.Combinatorial, and xunit.runner.visualstudio; dotnet test runs via the VSTest host with coverlet / XPlat Code Coverage. xunit.v3.core and xunit.v3.assert are referenced by CommunityToolkit.Datasync.TestCommon.
Key breaking changes in 4.0.0 (https://xunit.net/releases/v3/4.0.0)
- Microsoft Testing Platform v1 support dropped; MTP v2 is now the default. If CI/
dotnet testprints "Testing with VSTest target is no longer supported by Microsoft.Testing.Platform on .NET 10 SDK and later", the repo's test runner config must be updated (see https://xunit.net/docs/getting-started/v3/microsoft-testing-platform and the "Testing with 'dotnet test'" doc). Two options: (a) stay on VSTest by using thexunit.v3.*.mtp-offpackage variants (e.g.xunit.v3.mtp-offinstead ofxunit.v3), or (b) move to MTP v2 andglobal.jsontest.runnersettings. Prefer (a) first (smallest change; keeps coverlet/XPlat coverage and current CI commands), and file a follow-up issue for MTP migration. - Reporting switches renamed for MTP (
-report-xunit->-report-xunit-xml, etc.) and CTRF format changed. Check.github/workflows/build-library.ymland any scripts for use of these flags. - New class/method test orderers; test case ordering semantics changed. Search the tests for
ITestCaseOrderer,TestCaseOrderer,CollectionBehavior,DisableTestParallelization,MaxParallelThreads. - Parallelism attributes:
[assembly: CollectionBehavior]options for parallelism are obsolete/uncallable; use[assembly: Parallelization]. Checkxunit.runner.json/testconfig.jsontoo. - Mono unsupported (not relevant).
XUnit.Combinatorial2.x works with 4.x (depends onxunit.v3.extensibility.core>= 1.0.0); confirm after the "update test tooling" PR.
Steps
- Create the branch. Bump all four packages in lockstep (versions must exist: check NuGet; use latest 4.0.x).
- Choose option (a) above; fix compile errors (extensibility/orderer/parallelism APIs).
dotnet restore && dotnet build && dotnet test. Compare total/passed/skipped test counts againstmainbefore the change to prove no tests were silently dropped or not discovered.- Verify the CI test summary + coverage output still work (
TestResults/SummaryGithub.md, coverage upload) in.github/workflows/build-library.yml. - Dispatch
build-library.ymlon the fork with--ref <branch>. - Check
CONTRIBUTING.md/docs for test-run instructions that need updating.
Acceptance criteria
- xunit.v3 packages at 4.0.x and runner at 4.0.1; no test loss (document counts in the PR); CI green with coverage.
- If MTP migration is deferred, a follow-up issue exists.
- PR title:
chore(deps): update xUnit.net v3 to 4.0.
- Dominant language
- C#
- Stars
- 184
- Forks
- 48
- Avg merge
- 21m
- Merged PRs (30d)
- 7
Getting set up
- No Dockerfile or Docker Compose file
- No pull request template
- Read the contributing guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
More from CommunityToolkit/Datasync
-
Difficulty 2/5 1-3 hours Newbie friendliness 78/100
CommunityToolkit/Datasync#600 · 1 comment ·
-
Blocked dependencies Server
Difficulty 4/5 3-5 days Newbie friendliness 25/100
CommunityToolkit/Datasync#594 ·
-
dependencies Examples
Difficulty 4/5 3-5 days Newbie friendliness 40/100
CommunityToolkit/Datasync#593 ·
-
dependencies Infrastructure
Difficulty 3/5 1-2 days Newbie friendliness 72/100
CommunityToolkit/Datasync#592 ·
-
dependencies Infrastructure
Difficulty 2/5 1-3 hours Newbie friendliness 55/100
CommunityToolkit/Datasync#590 ·
All issues in CommunityToolkit/Datasync
Similar issues
-
enhancement needs-triage
Difficulty 2/5 1-3 hours Newbie friendliness 78/100
microsoft/microsoft-ui-reactor#1460 ·
Maintainers usually reply within 1 day
-
t/bug
Difficulty 2/5 1-3 hours Newbie friendliness 75/100
dotnet/maui#39950 · 1 reaction ·
Maintainers usually reply within 1 day
-
Difficulty 2/5 1-3 hours Newbie friendliness 72/100
NimblePros/deviq-hugo#121 ·
Maintainers usually reply within 1 day
-
Difficulty 2/5 1-3 hours Newbie friendliness 76/100
philterd/phileas-dotnet#188 ·
-
enhancement triaged
Difficulty 2/5 1-3 hours Newbie friendliness 68/100
nikneem/sessionize-api-client#55 · 3 comments ·