Table of Contents

Core Framework v3 3.2.2 2026 January 14

Today, we're shipping two new releases:

  • xUnit.net Core Framework v3 3.2.2
  • xUnit.net Analyzers 1.27.0 (release notes)

It's been 7 weeks since the release of 3.2.1.

As always, we'd like to thank all the users who contributed to the success of xUnit.net through usage, feedback, and code. 🎉

Release Notes

These release notes are a list of changes from 3.2.1 to 3.2.2.

Core Framework

  • We've updated the XML documentation for [ClassData] to indicate all the supported data source types in v3 (it previously only listed IEnumerable<object?[]>, which was the sole compatible implementation type for v2).

Assertion Library

  • We are shipping a Native AOT compatible version of the assertion library in xunit.v3.assert.aot.

    The minimum target framework for this release is .NET 9, due to dependencies on [OverloadResolutionPriorityAttribute] to resolve ambiguities that the compiler would otherwise falter on (and force you to write explicit casts in your test code).

    For source-based consumers (using either xunit.v3.assert.source or Git submodule), we have updated the README to indicate that you should define the symbol XUNIT_AOT if you want to make your own Native AOT compatible build of the library from source.

    Note

    Native AOT compatibility is currently only supported for the assertion library. There is more ongoing work to make the framework itself Native AOT compatible that is anticipated to land in a future major release.

Runners

  • The TRX result report now includes the string xunit.v3 in the adapterTypeName so that it can more easily be identified programmatically. xunit/xunit#3463

Runner Utility

  • BUG: We fixed an issue where AssemblyHelper should've been helping to resolve missing assembly dependencies with .NET, but was NOOPing instead.

Templates

  • We have updated the xunit3 templates with new command line switches:

    • --test-runner [mtp-v2|mtp-v1|vstest] to indicate the desired runner for dotnet test and Test Explorer. The resulting project only references xunit.runner.visualstudio now when you ask for vstest, as that package is not required for supporting Microsoft Testing Platform.
      Default value: mtp-v2
    • --command-line [xunit|mtp] to indicate the desired command line switches for dotnet run.
      Default value: xunit

    When asking for a --test-runner with Microsoft Testing Platform, we will also attempt to update your global.json as is required for dotnet test with the .NET 10 SDK. Note that while this will be successful for users who are using .NET SDK 9 or 10, it will result in a warning that the change was not successful if you're using .NET SDK 8. This warning can be safely ignored, since this setting is only consumed by .NET 10 SDK. For more information, see Using .NET SDK version 10 or later in the Microsoft Testing Platform getting started documentation.

    Note

    This only changes the defaults used when creating new projects. The xunit.v3 and xunit.v3.core version 3.* NuGet packages still default to using Microsoft Testing Platform v1, for backward compatibility reasons.

Microsoft Testing Platform

  • We have improved the error message when indicating that report filenames may not include path characters, to print the problematic file name in question. xunit/xunit#3461

  • BUG We fixed an inconsistency with theory data pre-enumeration default behavior (it was on for discovery, but off for execution). It is now always on, so that users can both discover and run individual theory data rows from the command line. microsoft/testfx#7163

  • BUG We fixed an issue where we were ignoring discovery requests that included test node UID filters. xunit/xunit#3465