Core Framework v3 3.0.1 2025 August 15
Today, we're shipping three new releases:
- xUnit.net Core Framework v3
3.0.1
- xUnit.net Analyzers
1.24.0
(release notes) - xUnit.net Visual Studio adapter
3.1.4
(release notes)
It's been 1 month since the release of 3.0.0
.
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.0.0
to 3.0.1
.
Core Framework
We have added
CulturedFact
andCulturedTheory
attributes (ported from our own test project). These attributes allow the user to specify one or more override cultures to run the tests with. The test display names will be decorated with the culture name (i.e.,Namespace.TestClass.TestMethod[en-US]
. xunit/xunit#2182We have added support for serializing tuples, so long as all the values in the tuple are serializable. xunit/xunit#3361
We have updated the selection order of custom serializers (that is, objects which implement
IXunitSerializer
) such that user-provided serializers will be chosen before the built-in serializers. This should allow users to register more specialized serializers for objects that might otherwise be serialized using built-in functionality (e.g., types that implementIFormattable
andIParsable<>
). xunit/xunit#3367We have added support for test attachments to our TRX report generator. xunit/xunit#3363
We have updated our CTRF report generator to comply with updates to the CTRF schema. This includes:
- Source line has been moved to
.results.tests[].line
, from.results.tests[].extra.fileLine
. - Attachments have been moved to
.results.tests[].attachments[]
(an array of the new attachment object), from.results.tests[].extra.attachments
(an object with one property per attachment). Note that attachments are now written to disk with a local file reference, whereas they previously were stored inline in the JSON.
- Source line has been moved to
We have added the ability to control test assembly unique IDs, to support more repeatable randomization across test assemblies built in multiple environments (i.e., a developer machine and a CI server). For more information, see the stable randomization section of the "What's New in xUnit.net v3?" documentation page. xunit/xunit#3365
BUG: We fixed an issue with CTRF generation that was emitting incorrect timestamps, which caused execution time calculations to be too-small by a factor of 1000. xunit/xunit#3358
BUG: We fixed an issue where the ordering of test assemblies and test collections could be inconsistent, depending on how the test assembly was run (typically manifested in the order being reversed). xunit/xunit#3359
Assertion Library
We have added support for unsafe pointers to
Assert.Null
andAssert.NotNull
. (Note that consumers of source-based assertions, such as viaxunit.v3.assert.source
or Git Submodule, must define the compilation symbolXUNIT_POINTERS
and add<AllowUnsafeBlocks>true</AllowUnsafeBlocks>
to their.csproj
file to enable unsafe pointer support.) xunit/xunit#3346BUG: We fixed an issue with field exclusions in
Assert.EquivalentWithExclusions
where we could accidentally exclude inappropriate members. xunit/xunit#3347
Runner Utility
- BUG: We fixed an issue where source information providers could be double-disposed when being passed in support of xUnit.net v2 test projects.