NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
NuGet · #91 most downloaded on NuGet
NUnit is a unit-testing framework for all .NET languages. It can run on macOS, Linux and Windows operating systems. NUnit can be used for a wide range of testing, from unit testing with TDD to full-fledged system and integration testing. It is a non-opinionated, broad and deep framework with multiple different ways to assert that your code behaves as expected. Many aspects of NUnit can be extended to suit your specific purposes. The latest version, version 5, is an upgrade from the groundbreaking NUnit 3 framework and its major update version 4. It is a modernized version, aimed at taking advantage of the latest .NET features and C# language constructs. If you are upgrading from NUnit 3, be aware of the breaking changes (https://docs.nunit.org/articles/nunit/release-notes/breaking-changes.html#nunit-40). Please see the NUnit 4 Migration Guide (https://docs.nunit.org/articles/nunit/release-notes/Nunit4.0-MigrationGuide.html) and take care to prepare your NUnit 3 code before you do the upgrade. If you're upgrading from NUnit 4, please check the release notes for version 5 (https://docs.nunit.org/articles/nunit/release-notes/framework.html). Supported platforms: - .NET Framework 4.6.2+ - .NET 8.0+ - .NET 10.0+
Last release 10 days ago
27 Sep 2026
Release timing varies
gaps range from 2 weeks to 7 months
Some releases are documented
notes for 24 of 49 stable releases
3 versions withdrawn
withdrawn after publishing
127 years old
65 releases · first in 1900
See release notes for details.
See release notes for details.
NUnit 5 is a major release, with a series of breaking changes that follow up on version 4's move towards a more type-safe NUnit.
The breaking changes are summarily documented more clearly in NUnit 5 - Breaking Changes .
There are also a series of enhancements, which are summarily documented in NUnit 5 - New Features .
There are in total 48 issues fixed in this release.
5396 Allow filtered test dependencies to run when dependent can run. Thanks to NUnit Team member Steven Weerdenburg for PR 5421
5387 Add internal "Lock" polyfill. Thanks to NUnit Team member Steven Weerdenburg for PR 5388
5354 Expose a property for ActiveTests in the TestContext. Thanks to NUnit Team member Terje Sandstrom for PR 5355
5349 Use ArgumentOutOfRangeException throw helper and remove CA1512 diagnostic. Thanks to Shaurya Srivastava for PR 5350
5348 Use ArgumentNullException throw helper and remove CA1510 diagnostic. Thanks to ANSH SINGH for PR 5351
5323 Report compiler error when asserting non-attribute in Has.Attribute<T>() . Thanks to NUnit Team member Steven Weerdenburg for PR 5322
5316 Add .net 10 as target. Thanks to NUnit Team member Terje Sandstrom for PR 5317
5267 Remove the OverloadResolutionPriority attributes added to support the transition to Action and Func-based APIs.
5260 Add a "warning" threshold to the MaxTime attribute. Thanks to Ricardo Macedo for PR 5261
5220 Repeat test cases with threshold-based success/failure. Thanks to NUnit Team member Terje Sandstrom for PR 5318
4857 Drop .NET 6 as a build target of the framework. Thanks to NUnit Team member Manfred Brands for PR 4884
4717 Provide generic type definitions for TestCaseData to make it type safe. Thanks to Jonathan Gilbert for PR 5138
4384 Assert.ThrowsAsync, Assert.CatchAsync, and Assert.DoesNotThrowAsync should be awaitable. Thanks to NUnit Team member Steven Weerdenburg for PR 5268
3947 Simplify asserting ArgumentException.ParamName. Thanks to NUnit Team member Steven Weerdenburg for PR 5304
51 Test Dependency Attribute. Thanks to NUnit Team member Steven Weerdenburg for PR 5386
5415 DelayedConstraintTests reuses a disposed static wait handle on a second fixture execution. Thanks to Neil Colvin for PR 5417
5414 Stream equality compares stale pooled-buffer bytes beyond the end of the streams. Thanks to Neil Colvin for PR 5416
5406 Assert.Ignore: Warnings should be displayed. Thanks to NUnit Team member Manfred Brands for PR 5405
5401 A by-ref-returning property on an exception crashes the test host on .NET Framework. Thanks to Marko Lahma for PR 5402
5341 Confusing difference in Run Settings display between NUnitLite and ConsoleRunner. Thanks to Amir Tahan for PR 5361
5324 C++/CLI compiler warning C4642 in EqualNumericConstraint and EqualNumericWithoutUsingConstraint. Thanks to NUnit Team member Manfred Brands for PR 5321
5273 Verify that generic AssignableToConstraint and AssignableFromConstraint works as expected. Thanks to NUnit Team member Steven Weerdenburg for PR 5277
5252 Upgrade to 4.6.0 containing #4824 is source-incompatible in F# even on net9.
5247 Assert for null-valued dynamic variables doesn't work in 4.6.0.
4320 AssemblyHelper throws Exception when loading dynamically compiled Assemblies. Thanks to NUnit Team member Steven Weerdenburg for PR 5308
3849 Assert.Catch inside Assert.Multiple gives unclear failure message. Thanks to NUnit Team member Terje Sandstrom for PR 5280
3248 Null dereference in TestWorkerThreadProc. Thanks to NUnit Team member Manfred Brands for PR 5374
2789 No tests run when nested classes in generic fixture. Thanks to NUnit Team member Manfred Brands for PR 5370
1001 Too many Inconclusive test results. Thanks to NUnit Team member Steven Weerdenburg for PR 5251
5273 Verify that generic AssignableToConstraint and AssignableFromConstraint works as expected. Thanks to NUnit Team member Steven Weerdenburg for PR 5277
5180 Change namespace for legacy String-, Collection-, File- and DirectoryAssert classes. Thanks to NUnit Team member Terje Sandstrom for PR 5181
5425 Remove remaining .NET 6 build references. Thanks to NUnit Team member Steven Weerdenburg for PR 5426
5398 Suppress namespace messages where it is intentional. Also suppress primary constructor warnings. Thanks to NUnit Team member Terje Sandstrom for PR 5399
5301 Update README and nuspec files for NUnit 5. Thanks to NUnit Team member Terje Sandstrom for PR 5302
5228 Set assembly version to Minver default for the 5.0.0.0 release. Thanks to NUnit Team member Terje Sandstrom for PR 5299
5222 Follow the .NET versioning guidance for assembly versions: AssemblyVersion is now Major.0.0.0, so it stays 5.0.0.0 for all NUnit 5.x releases.
5197 Add files to support AI agent coding. Thanks to Joel Dickson for PR 5225
5378 Deprecate the Order attribute. Thanks to NUnit Team member Steven Weerdenburg for PR 5384
5373 Eliminate forced stop from the API. Thanks to NUnit Team member Manfred Brands for PR 5374
5265 4.6 breaks our tests because of TestDelegate / Action ambiguity.
5263 Deprecate non-generic CollectionTally class and move the result class out of nested class. Thanks to NUnit Team member Steven Weerdenburg for PR 5310
5253 Remove TestDelegate and ActualValueDelegate. Thanks to NUnit Team member Terje Sandstrom for PR 5262
5391 Add missing test coverage for method dependencies on generic methods. Thanks to NUnit Team member Steven Weerdenburg for PR 5392
5367 Eliminate StopRun(bool) method from .NET Core builds. Thanks to CharliePoole for PR 5369
5271 Update Collection Equivalency performance tests to use MaxTime. Thanks to Silva Dev BR for PR 5276
5218 Feat/allow custom comparer null self.
5145 Remove the object? overloads for Is.SameAs and underlying constraint. Thanks to NUnit Team member Steven Weerdenburg for PR 5160
5007 Create generic type checking constraints. Thanks to NUnit Team member Steven Weerdenburg for PR 5191
3669 Update recognized platform names so that "NET" and "DotNET" means .NET instead of .NET Framework. Thanks to NUnit Team member Steven Weerdenburg for PR 5300
5373 Eliminate forced stop from the API. Thanks to NUnit Team member Manfred Brands for PR 5374
5367 Eliminate StopRun(bool) method from .NET Core builds. Thanks to CharliePoole for PR 5369
5323 Report compiler error when asserting non-attribute in Has.Attribute<T>() . Thanks to NUnit Team member Steven Weerdenburg for PR 5322
5265 4.6 breaks our tests because of TestDelegate / Action ambiguity.
5263 Deprecate non-generic CollectionTally class and move the result class out of nested class. Thanks to NUnit Team member Steven Weerdenburg for PR 5310
5253 Remove TestDelegate and ActualValueDelegate. Thanks to NUnit Team member Terje Sandstrom for PR 5262
5180 Change namespace for legacy String-, Collection-, File- and DirectoryAssert classes. Thanks to NUnit Team member Terje Sandstrom for PR 5181
5145 Remove the object? overloads for Is.SameAs and underlying constraint. Thanks to NUnit Team member Steven Weerdenburg for PR 5160
5007 Create generic type checking constraints. Thanks to NUnit Team member Steven Weerdenburg for PR 5191
4857 Drop .NET 6 as a build target of the framework. Thanks to NUnit Team member Manfred Brands for PR 4884
4384 Assert.ThrowsAsync, Assert.CatchAsync, and Assert.DoesNotThrowAsync should be awaitable. Thanks to NUnit Team member Steven Weerdenburg for PR 5268
This issue is a breaking change.
The following assertions now return a Task which much be awaited in order for the assertion to be evaluated.
Assert.ThrowsAsync
Assert.CatchAsync
Assert.DoesNotThrowAsync
Version 4.14 or higher of the nunit.analyzers nuget package can help automate this conversion by reporting and optionally fixing unawaited assertions. The analyzer will also update the immediately enclosing function to return a Task if necessary.
3669 Update recognized platform names so that "NET" and "DotNET" means .NET instead of .NET Framework. Thanks to NUnit Team member Steven Weerdenburg for PR 5300
This issue is a breaking change.
The meaning of "NET" and "DotNET" in the PlatformAttribute have been updated in NUnit 5 to better align with Microsoft's current terminology. These identifiers could previously be used to allow tests to run only on .NET Framework. Modern .NET releases such as .NET 8, 9, or 10 are now generally known as just ".NET" and so "NET" and "DotNET" will now be used to target modern .NET platforms rather than .NET Framework. New NETFramework and DotNETFramework identifiers have also been added to better differentiate. Existing usages of "NET" or "DotNET" which are intended to target to .NET Framework will need to be updated to either "NETFramework" or "DotNETFramework".
Please see the below compatibility table for more info. netfx refers to .NET Framework and modern .NET refers to .NET Core and newer releases.
Identifier NUnit 4 NUnit 5
NET netfx modern .NET
NETFramework ❌ netfx
NETCore modern .NET modern .NET
DotNET netfx modern .NET
DotNETCore modern .NET modern .NET
DotNETFramework ❌ netfx
We want to express our heartfelt gratitude to everyone who has contributed to this release by reporting bugs, suggesting enhancements, and providing valuable feedback. Your efforts help make NUnit better for the entire community.
A special thank you to the following reporters for identifying issues:
ashes999 CharliePoole Heath Stewart HF
Joel Dickson Joseph Musser MaceWindu Manfred Brands
Marko Lahma Mikkel Nylander Bundgaard Neil Colvin Patrick Stevens
Per Rovegård R. Miller Rachid Rob Prouse
Steven Weerdenburg Terje Sandstrom
and to the commenters who engaged in discussions and offered further insights:
Ace Olszowka Amir Tahan Andrew Brown ANSH SINGH
ashes999 Austin Howard Candy Chiu CharliePoole
Chris Maddock circa1741 DannyBraig Espen Halsaa Albrektsen
Flynn1179 fraser addison HF Jeff Cave
Jez Joel Dickson Johan Larsson Jonathan Gilbert
Joseph Musser Leo Shine m4ggo MaceWindu
Manfred Brands Marko Lahma MartinFayRAX Mike Parker
Mikkel Nylander Bundgaard Neil Colvin Ondřej Sekáč Patrick Stevens
Per Rovegård R. Miller Rachid Rafael Ladeira
Ricardo Macedo Rob Prouse Russell Smith Sebastiaan Dammann
Sebastian Nawara Shaurya Srivastava Shawn Silva Dev BR
Steven Weerdenburg Terje Sandstrom
One column per quarter.
See release notes for details.
See release notes for details.
This is a hotfix release for two regression bugs.
5258 4.6 Regression: Cross-type equivalency checking doesn't work anymore. Thanks to NUnit Team member Steven Weerdenburg for PR 5259
5249 Inconclusive Result while using RetryExceptions. Thanks to Christoph Fürbacher for PR 5250
We want to express our heartfelt gratitude to everyone who has contributed to this release by reporting bugs, suggesting enhancements, and providing valuable feedback. Your efforts help make NUnit better for the entire community.
A special thank you to the following reporters for identifying issues:
Christoph Fürbacher Lukas Dürrenberger
and to the commenters who engaged in discussions and offered further insights:
Christoph Fürbacher Steven Weerdenburg Terje Sandstrom
Ensure the approach to testing path constraints is consistent across …
Ensure the approach to testing path constraints is consistent across …
This is a release with several enhancements, more type safety and several bugs fixed.
If you're using TestDelegate or ActualValueDelegate and you're on .net 8 or lower, then be aware of the requirement for how to avoid ambiguity errors, see the Breaking changes section on Issue4824 .
Please also update the NUnit.Analyzers package to version 4.13.
There are 27 issues fixed in this release.
5232 Run the collection equivalency tests on MacOS. Thanks to NUnit Team member Steven Weerdenburg for PR 5234
5173 Access to the actual Exception object. Thanks to NUnit Team member Manfred Brands for PR 5217
5158 Constants for canonical platform names. Thanks to Jonathan Gilbert for PR 5159
5132 Thread.Abort() in Test causes "Test cancelled by user" result for NUnit 4.5.0. Thanks to NUnit Team member Manfred Brands for PR 5171
4824 Convert TestDelegate and ActualValueDelegate to Action and Func<T> . Thanks to NUnit Team member Manfred Brands for PR 5196
4254 Improve performance of equivalency, superset, and subset constraints for homogenous collections. Thanks to NUnit Team member Steven Weerdenburg for PR 5224
4240 Feature request: Run the tests in main thread. Thanks to NUnit Team member Steven Weerdenburg for PR 5188
4156 [Timeout] doesn't work on abstract class fixtures. Thanks to NUnit Team member Manfred Brands for PR 5167
4128 Improve how exception are displayed. Thanks to NUnit Team member Manfred Brands for PR 5216
3822 Make ArgDisplayNames public. Thanks to Paul Irwin for PR 5236
3663 When TestCaseSource produces empty cases collection, test should be Passed/Failed/Inconclusive per creator expectation. Thanks to NUnit Team member Steven Weerdenburg for PR 5125
2933 Add Is.SameAs overload with a reference type constraint. Thanks to NUnit Team member Steven Weerdenburg for PR 5134
5238 HookData.Exception will report an NUnit-wrapped exception object in AfterTestHook(HookData hookData) . Thanks to NUnit Team member Steven Weerdenburg for PR 5240
5237 Assert.Pass() can cause HookData.Exception to be populated with an exception. Thanks to NUnit Team member Steven Weerdenburg for PR 5240
5194 Add generic SameAs<> to ConstraintExpression . Thanks to NUnit Team member Steven Weerdenburg for PR 5200
5179 Change in behaviour in v4.5 when passing a single "null" to a "params" test method via testcasesource. Thanks to NUnit Team member Manfred Brands for PR 5184
5178 Passing IEnumerable<object> from TestCaseSource to a generic method seems to break in some cases. Thanks to NUnit Team member Manfred Brands for PR 5195
5161 PlatformAttribute is declared AllowMultiple = true but that doesn't work. Thanks to NUnit Team member Manfred Brands for PR 5166
5146 Stack overflow in PropertiesComparer when object has property of its own value type.
4131 Platform filter is not inherited. Thanks to NUnit Team member Manfred Brands for PR 5166
5198 Benchmarkdotnet. Thanks to NUnit Team member Terje Sandstrom for PR 5203
5193 Update cake to v6.1. Thanks to NUnit Team member Steven Weerdenburg for PR 5201
5189 Update cake to latest 5.x version. Thanks to NUnit Team member Steven Weerdenburg for PR 5190
5186 Optimize NUnit's array unpacking. Thanks to NUnit Team member Steven Weerdenburg for PR 5202
5182 Remove unnecessary NUnit analyzer suppressions from latest analyzer package. Thanks to NUnit Team member Steven Weerdenburg for PR 5183
5168 Check tests and documentation for the Platform attribute. Thanks to NUnit Team member Steven Weerdenburg for PR 5204
5154 Apply some internal string optimizations. Thanks to NUnit Team member Steven Weerdenburg for PR 5155
4824 Convert TestDelegate and ActualValueDelegate to Action and Func<T> . Thanks to NUnit Team member Manfred Brands for PR 5196
This issue is a partially breaking change.
If you use TestDelegate and Action explicitly , you must either:
Alternative 1: Set your target framework to .Net 9.0 or higher
Alternative 2: You must set your language version to 13 or higher, and use the Visual Studio 2022 version 17.12 or higher, or use .Net 9 SDK (which includes the C# 13 compiler), while still targeting .net8 or lower.
Scenario NUnit pre 4.6 NUnit 4.6+ (.Net < 9.0) NUnit 4.6+ (.Net >= 9.0) NUnit 4.6+ (.Net<9.0 and langversion >=13)
Inline lambda ✅ ❌ (breaking) ✅ ✅
Action / Func<T> (inline lambda) ✅ (via implicit conversion) ❌ (breaking) ✅ ✅
Action / Func<T> (as variable) ❌ (type mismatch) ✅ ✅ ✅
Explicit TestDelegate usage ✅ ❌ (breaking) ✅ ✅
Evaluates functions ❗ (success, but no eval) ✅ ✅ ✅
Examples of explicit TestDelegate usages are:
Explicit variable (most common)
Method return types
Method parameters / helpers
Fields / properties
Extension / library code (important) (3rd party helpers or frameworks)
Code for reproduction of these cases can be found at https://github.com/nunit/nunit.issues/tree/main/Issue4824
We want to express our heartfelt gratitude to everyone who has contributed to this release by reporting bugs, suggesting enhancements, and providing valuable feedback. Your efforts help make NUnit better for the entire community.
A special thank you to the following reporters for identifying issues:
Alexander Kaiser bmalrat ccarmannt Jonathan Gilbert
Joseph Musser Manfred Brands OccamRazor Sergey Terekhin
Socolin - Bertrand Provost Steven Weerdenburg Terje Sandstrom tobyash86
Tomáš Vichta Will Dean
and to the commenters who engaged in discussions and offered further insights:
Alexander Kaiser Carl Marcum ccarmannt CharliePoole
Chris Maddock Dilshod Komilov Evgeny Lukashevich FireController#1847
Jonathan Gilbert JordanW9232 Joseph Musser Manfred Brands
Michael Crawford Mikkel Nylander Bundgaard OccamRazor Oleksandr Liakhevych
Paul Irwin Rob Prouse Sergey Terekhin Simon Cropp
Socolin - Bertrand Provost Stefan Holpp Steven Weerdenburg Terje Sandstrom
Vlad Catalina Will Dean Zsolt Szabo-Resch
See release notes for details.
See release notes for details.
This is a patch release for 4.5.0, to fix some regression bugs.
A few other fixes sneaked into the release though.
There are 7 issues fixed in this release.
5152 Assert of byte with Is.EqualTo().Within().Percent fails unexpectedly. Thanks to NUnit Team member Steven Weerdenburg for PR 5153
5137 Task Synchronization Issue after upgrading to 4.5.0.
5133 All tests fail with "TargetFramework doesn't support timeout on tests" when switching from NUnit 4.4 to NUnit 4.5. Thanks to NUnit Team member Manfred Brands for PR 5140
5129 Passing Array as test parameter fails with 4.5.0. Thanks to NUnit Team member Terje Sandstrom for PR 5130
4658 Apartment attribute ignored when .runsettings contains DefaultTimeout. Thanks to NUnit Team member Manfred Brands for PR 5140
We want to express our heartfelt gratitude to everyone who has contributed to this release by reporting bugs, suggesting enhancements, and providing valuable feedback. Your efforts help make NUnit better for the entire community.
A special thank you to the following reporters for identifying issues:
Christoph Bersch dd-eg Jake Meiergerd maettu-this
michaelmuller12 Ralf Koban Steven Weerdenburg
and to the commenters who engaged in discussions and offered further insights:
Adrian Frielinghaus cursor[bot] dd-eg Florian Jäckel
Jake Meiergerd Jiří Zapletal maettu-this Manfred Brands
michaelmuller12 Mikkel Nylander Bundgaard Richard R. Rob Prouse
Saymon Steven Weerdenburg Terje Sandstrom
This release introduce Execution Hooks , a finegrained way of hooking into the different stages of a test execution. The documentation describe the wa
This release introduce Execution Hooks , a finegrained way of hooking into the different stages of a test execution. The documentation describe the way you can make your own hooks to tap into this. There are five stages, and you can hook in both Before and After the stage has run.
Assert.AreEqual and friends are back! In this release we could take advantage of the new extension method mechanism for static classes introduced in C# 14, and thus bring these back into the NUnit.Framework namespace!
In this release 40 different enchancements and bug fixes have been done.
5100 Add an Enum.Parse<T>() method for .NET Framework builds. Thanks to Shaig Mahmudov for PR 5102
5073 Generically Typed UsingPropertiesComparer Consistency. Thanks to NUnit Team member Manfred Brands for PR 5077
5040 Add NET10 target for the framework tests. Thanks to Zahran Yahia Khan for PR 5041
4900 CancelAfter & TestCaseSource with CancellationToken method parameter cause test failures. Thanks to NUnit Team member Steven Weerdenburg for PR 5057
4814 Assert.Multiple throws 'The assertion scope was disposed out of order' when run in parallel. Thanks to NUnit Team member Manfred Brands for PR 5074
4744 Introduce HookExtension to support high level tests. Thanks to Rajiv Sinha for PR 4986
4693 Re-add "legacy" Assert methods. Thanks to NUnit Team member Terje Sandstrom for PR 5054
4662 StringAssert.IsNullOrEmpty overloads. Thanks to Copilot for PR 5063
4613 Can you please give us back Assert.IsNotNull , Assert.IsFalse etc.?. Thanks to NUnit Team member Terje Sandstrom for PR 5054
4130 Detect if inside an Assert.Multiple. Thanks to NUnit Team member Manfred Brands for PR 5081
3922 Expose a way to provide 'StringComparison' value to 'StartsWith' assertions. Thanks to Nancy Huynh for PR 5052
3360 Add params object[] overload to SetArgDisplayNames. Thanks to Copilot for PR 5060
3348 Incorrect exception thrown when using an old SynchronizationContext. Thanks to NUnit Team member Manfred Brands for PR 5075
2785 Retry attribute should handle unexpected exceptions. Thanks to NUnit Team member Manfred Brands for PR 5058
1883 TestCaseSource with Test Method with params arguments. Thanks to NUnit Team member Steven Weerdenburg for PR 5057
1388 Retry Decorator does not retry test if fail cause is an exception. Thanks to NUnit Team member Manfred Brands for PR 5058
1281 TestCaseSourceAttribute to support optional arguments. Thanks to NUnit Team member Steven Weerdenburg for PR 5057
1388 Retry Decorator does not retry test if fail cause is an exception. Thanks to NUnit Team member Manfred Brands for PR 5058
5089 Optional parameters aren't handled when using TestFixtureSource. Thanks to NUnit Team member Steven Weerdenburg for PR 5090
2958 Support Type Arguments alongside Constructor Arguments with [TestFixtureSource]. Thanks to NUnit Team member Steven Weerdenburg for PR 5086
5120 Console.Write where ExecutionContext flow is suppressed is never written. Thanks to Joost Koehoorn for PR 5121
5106 Test execution never ends when Ctrl+C key hit in MTP mode. Thanks to NUnit Team member Terje Sandstrom for PR 5105
5096 Unclear error if MTP times out in a setup fixture. Thanks to NUnit Team member Terje Sandstrom for PR 5105
5093 Generic Test Fixtures not run from VS Test Explorer. Thanks to NUnit Team member Manfred Brands for PR 5094
5087 InvalidCastException for arguments when running nunit console with .NET 8 or 10. Thanks to NUnit Team member Steven Weerdenburg for PR 5101
5082 AssignableTo/From among value types. Thanks to NUnit Team member Steven Weerdenburg for PR 5083
5061 TestCase (+ TestCaseSource) throw exception when passing arguments to params array in generic method. Thanks to NUnit Team member Manfred Brands for PR 5066
5051 TestContext.CurrentContext.Test.AllCategories() is not thread-safe. Thanks to NUnit Team member Manfred Brands for PR 5053
5031 Repeat attribute only prints output of last repetition after 4.4.0 update. Thanks to NUnit Team member Manfred Brands for PR 5038
5026 Assume.That no longer works in Setup. Thanks to NUnit Team member Manfred Brands for PR 5029
5025 PropertiesComparer fails on properties with new modifier. Thanks to Luca Rampazzo for PR 5028
5023 System.ArgumentException: Argument name must not be the empty string Arg_ParamName_Name, name in browser-wasm runtime. Thanks to NUnit Team member Manfred Brands for PR 5024
4513 Randomizer.GetString can return strings that have invalid surrogate pairs. Thanks to NUnit Team member Terje Sandstrom for PR 5078
4119 Apartment(ApartmentState.STA) doesn't works together with Timeout. Thanks to NUnit Team member Manfred Brands for PR 5123
3930 Whole tests sequence is aborted when single test fails because of async bug. Thanks to NUnit Team member Manfred Brands for PR 5068
3740 SynchronizationContext not preserved from OneTimeSetup to Test method. Thanks to NUnit Team member Manfred Brands for PR 5068
3434 Handling of passing null as element to a parametric testmethod that accepts a params. Thanks to NUnit Team member Steven Weerdenburg for PR 5090
3125 TestCaseSource "Single" cannot be converted to "int" issue. Thanks to NUnit Team member Terje Sandstrom for PR 5079
None
5062 Tests marked Explicit for being used as Testdata should be moved to NUnit.TestData project. Thanks to Rajiv Sinha for PR 5065
5002 Allow TestBuilder to execute Explicit tests. Thanks to NUnit Team member Manfred Brands for PR 5032
5055 Convert sln file to slnx format. Thanks to NUnit Team member Steven Weerdenburg for PR 5056
None
None
We want to express our heartfelt gratitude to everyone who has contributed to this release by reporting bugs, suggesting enhancements, and providing valuable feedback. Your efforts help make NUnit better for the entire community.
A special thank you to the following reporters for identifying issues:
Alex Crome Ant Jones arminthecook Brandon Ording
Brian Bruno Juchli Chris Maddock Christoph Fürbacher
Daniel eberzosa Gordon Tyler Joost Koehoorn
Joseph Musser Juliano Leal Goncalves Luca Rampazzo maettu-this
Manfred Brands Mikkel Nylander Bundgaard Miroljub Tomic Neil Colvin
Radim Bernatik randersen Rob Prouse Roman
Sam Sean Mackedie Stefan Vogt Steven Weerdenburg
Terje Sandstrom Trofimov Pavel
and to the commenters who engaged in discussions and offered further insights:
Ant Jones Bouke Haarsma Brandon Ording Braydon Hall
Brian Bruno Juchli CharliePoole Chris Maddock
Christoph Fürbacher cPetru d-Z-b delgesso
Derek Blankenship DJ Doena Joost Koehoorn Joseph Musser
Juliano Leal Goncalves Kais Liraz Shay Luca Rampazzo
Manfred Brands Maxim Rubis Michael Render Mikkel Nylander Bundgaard
Miroljub Tomic Mitchell Maler Neil Colvin Radim Bernatik
Rajiv Sinha randersen René Schultz Madsen Rob Prouse
Roman Sam Scott Buchanan Shaig Mahmudov
Simona Avornicesei Sputnik24 Stanislav S. Yarmonov Stefan Holpp
Stefan Vogt Steven Weerdenburg tekHedd Terje Sandstrom
Tom Edwards Trofimov Pavel Zahran Yahia Khan
5011 Breaking change in version 4.4.0-beta.1. Thanks to NUnit Team member Manfred Brands for PR 5013
This release contains bug fixes and smaller enhancements, with 26 issues fixed.
4975 Support ignoring line ending format when comparing strings. Thanks to Jihoon Park for PR 4976
4968 Asserts with UsingPropertiesComparer and Tolerance crashes unxpectedly if using TimeSpan and the class contains Properties with different types. Thanks to NUnit Team member Manfred Brands for PR 4972
4945 Integer Assert.That(i, Is.Even); / Assert.That(i, Is.Odd); and Assert.That(i, Is.MultipleOf(step)); . Thanks to NUnit Team member Manfred Brands for PR 4946
4935 [Feature Request] PropertiesComparer for different types. Thanks to NUnit Team member Manfred Brands for PR 4925
4909 Assertion failures with PropertiesComparer are hard to debug when combined with other modifiers. Thanks to NUnit Team member Manfred Brands for PR 4922
4687 Value equality on subset of object properties. Thanks to NUnit Team member Manfred Brands for PR 4925
4244 [Feature request] EquivalentTo that compares similar objects of different types. Thanks to NUnit Team member Manfred Brands for PR 4925
5011 Breaking change in version 4.4.0-beta.1. Thanks to NUnit Team member Manfred Brands for PR 5013
4998 PropertyConstraint Causes Unexpected Behavior Because the Property's Value Is object Instead of the Property's Actual Type. Thanks to LeQuackers for PR 5003
4981 ContainsKey doesn't support IgnoreCase, IgnoreWhiteSpace, or IgnoreLineEndingFormat. Thanks to NUnit Team member Manfred Brands for PR 4989
4964 Is.Not.EqualTo does not work correctly with Using comparer. Thanks to NUnit Team member Manfred Brands for PR 4965
4954 Regression in Is.EqualTo(DateTime) constraint in 4.3.x for types that implement IEquatable<DateTime> . Thanks to NUnit Team member Manfred Brands for PR 4957
4937 PartitionFilter.ComputeHasValue throws exception when test name is greater than 4096 characters. Thanks to Will Ray for PR 4941
4933 Dictionary assertion falsely passes with PropertiesComparer when subtypes are involved. Thanks to Oleksandr Liakhevych for PR 4934
4919 Assert.ThatAsync doesn't work correctly if calling nested Asserts. Thanks to NUnit Team member Manfred Brands for PR 4922
4917 Multiple unannounced breaking changes in minor version. Thanks to NUnit Team member Manfred Brands for PR 4927
4916 Is.EqualTo(double).Using(EqualityComparer<double>) causes overload ambiguity error. Thanks to NUnit Team member Manfred Brands for PR 4951
4545 DelegatingConstraintResult does not use its _innerResult for WriteMessageTo . Thanks to NUnit Team member Manfred Brands for PR 4922
4537 AssertException in TearDown hides Exception in Test. Thanks to NUnit Team member Manfred Brands for PR 4979
2841 DelayedConstraint calls delegate twice. Thanks to NUnit Team member Manfred Brands for PR 4929
5014 Use span-based APIs to construct random GUIDs on non-framework codepath. Thanks to zaidonolsen for PR 5015
4995 Check and fix properties for sideeffects. Thanks to NUnit Team member Manfred Brands for PR 5001
4994 Fix or remove ToString in class ConstraintExpression. Thanks to NUnit Team member Manfred Brands for PR 5001
4990 FileLoadException for NUnit 4.3.2: System.Buffers 4.0.4 missing. Thanks to NUnit Team member Manfred Brands for PR 4991
None
This is technically breaking, and is marked as obsolete. It is not used by NUnit code, but some externals may use it. If you do, please read the issue, and move away from this. It will be removed in next version.
We want to express our heartfelt gratitude to everyone who has contributed to this release by reporting bugs, suggesting enhancements, and providing valuable feedback. Your efforts help make NUnit better for the entire community.
A special thank you to the following reporters for identifying issues:
Artur Kharin Christophe Chevalier Christophe PLAT Dan Vicarel
Edgaras Gr‚goire Igor Vyatkin Jihoon Park
Johan Appelgren Julien Nigay Jrg Staub LeQuackers
maettu-this Manfred Brands Oleksandr Liakhevych Sputnik24
Stefan Frank Steven Weerdenburg Terje Sandstrom Will Ray
and to the commenters who engaged in discussions and offered further insights:
Anders Gustafsson Andrew Gray CharliePoole Christoph
Christophe PLAT Dan Vicarel David Schruf Edgaras
ethan Gr‚goire Igor Vyatkin Jihoon Park
Johan Appelgren Joseph Musser Julien Nigay Jrg Staub
LeQuackers maettu-this Manfred Brands Mikkel Nylander Bundgaard
Oleksandr Liakhevych pembebiri Sean Killeen Sivasubramanian T
Sputnik24 Star62enis Stefan Frank Steven Weerdenburg
Terje Sandstrom Vito Videtta Will Ray zaidonolsen
This is a hotfix release for a regression bug, and also fixes the version numbers of the assembly DLLs.
This is a hotfix release for a regression bug, and also fixes the version numbers of the assembly DLLs.
There are 2 issues fixed in this release.
4910 Versioning for .NET Framework 4.6.2 version of NUnit v4.3.1 inconsistent in .csproj file.
4907 Assert.ThatAsync fail to catch expected exception. Thanks to NUnit Team member Manfred Brands for PR 4908
We want to express our heartfelt gratitude to everyone who has contributed to this release by reporting bugs, suggesting enhancements, and providing valuable feedback. Your efforts help make NUnit better for the entire community.
A special thank you to the following reporters for identifying issues:
Brian shlomi-borovitz-greenroad
and to the commenters who engaged in discussions and offered further insights:
Manfred Brands Oleksandr Liakhevych shlomi-borovitz-greenroad Steven Weerdenburg
Terje Sandstrom
This is a hotfix release to address a type safety issue that broke when some classes had implicit conversion operators.
This is a hotfix release to address a type safety issue that broke when some classes had implicit conversion operators.
We had 3 bugs reported, they are all fixed by the same Pull Request.
In addition, a small internal build issue was fixed.
4903 Strange null reference after updating to v4.3.0. Thanks to NUnit Team member Manfred Brands for PR 4899
4902 Regression in 4.3.0 comparing class that override equals and implicit string conversion. Thanks to NUnit Team member Manfred Brands for PR 4899
4898 Assert(..., Is.EqualTo(...)) issues since 4.3.0. Thanks to NUnit Team member Manfred Brands for PR 4899
We want to express our heartfelt gratitude to everyone who has contributed to this release by reporting bugs, suggesting enhancements, and providing valuable feedback. Your efforts help make NUnit better for the entire community.
A special thank you to the following reporters for identifying issues:
Gian Maria
MaxKot
moshekar
Thomas Haughland Rudfoss
and to the commenters who engaged in discussions and offered further insights:
Jeremy Pritts
Manfred Brands
Martin Gasser
moshekar
Ole Gunnar Borstad
Oleksii Ruban
smdn
Steven Weerdenburg
Tadija Bagaric
Terje Sandstrom
Thomas Haugland Rudfoss
This release includes a series of enhancements and bug fixes. Notably, some of the bug fixes address issues related to a lack of type safety in NUnit.
This release includes a series of enhancements and bug fixes. Notably, some of the bug fixes address issues related to a lack of type safety in NUnit. See issues 4877 , 4876 , 4875 , 4874 and 150 .
Be aware that this might cause compile errors in cases where the code was previously ignored. These errors can be safely resolved by removing the affected code.
There are 29 issues fixed in this release.
4890 Add .net 8 as a target framework in the package. Thanks to NUnit Team member Manfred Brands for PR 4884
4886 Optimize ToArray()[0] with First() in TestAssert class in TestAssert.cs. Thanks to Saurav-shres for PR 4888
4862 PropertiesComparer 32 Property Limit Error Message. Thanks to Cincidial for PR 4870
4861 Always repeat Test x times. Thanks to Christoph for PR 4864
4852 Expand the usability of Contains.Key(...).WithValue(...) . Thanks to Michael Render for PR 4854
4846 Add NET9 target for the framework tests. Thanks to Leon Lux for PR 4851
4839 Allow to use collection expressions with collection constraints. Thanks to Oleksandr Liakhevych for PR 4840
4832 Setting thread names to make debugging easier. Thanks to NUnit Team member Terje Sandstrom for PR 4835
4811 Assert.ThatAsync does not support polling. Thanks to Oleksandr Liakhevych for PR 4813
4771 Support tuples in inline data. Thanks to MaxKot for PR 4772
2492 EqualConstraint.Using(StringComparer.*) causes overload ambiguity error. Thanks to NUnit Team member Manfred Brands for PR 4882
4887 FileLoadException for NUnit 4.2.2 when upgrade the System.Buffers to 4.6.0. Thanks to NUnit Team member Terje Sandstrom for PR 4891
4877 Fix EqualTo modifiers for DateTime. Thanks to NUnit Team member Manfred Brands for PR 4882
4876 Equal.Within Fails With Negative Tolerance. Thanks to Raffael Botschen for PR 4881
4875 String constraints should not allow using Within. Thanks to NUnit Team member Manfred Brands for PR 4882
4874 IgnoreCase, Seconds and Minutes can be used on numerical constraints. Thanks to NUnit Team member Manfred Brands for PR 4882
4868 TestCase- and TestCaseSourceAttribute cannot handle generic test methods where method parameter is Nullable<T>. Thanks to NUnit Team member Manfred Brands for PR 4872
4836 PropertiesComparer doesn't work well with records. Thanks to Oleksandr Liakhevych for PR 4837
4807 Is.EqualTo with empty ValueTuple throws System.NotSupportedException "Specified Tolerance not supported for instances of type 'System.ValueTuple' and 'System.ValueTuple'" after updating to NUnit 4.2.2. Thanks to NUnit Team member Manfred Brands for PR 4809
4281 Throws and Delayed (.After) Constraints do not cooperate, resulting in incorrectly failing test. Thanks to Oleksandr Liakhevych for PR 4815
4110 Support running single-threaded async tests on Linux. Thanks to NUnit Team member Manfred Brands for PR 4883
3772 IsEquivalent on default ImmutableArray throws exception. Thanks to Sergio L. for PR 4850
3713 Description of --where=EXPRESSION missing from Notes section. Thanks to rsjackson3 for PR 4817
150 Improve inference of type arguments in generic test methods. Thanks to NUnit Team member Steven Weerdenburg for PR 4873
None
4865 Increase Legacy NUnit so at least all methods are covered. Thanks to NUnit Team member Manfred Brands for PR 4871
4841 MacOS test failure. Thanks to NUnit Team member Manfred Brands for PR 4842
4819 Remove StringUtil.Compare() and update references in the tests. Thanks to Sergio L. for PR 4827
4798 Add a test to ensure direct framework dependencies in csproj are reflected in nuspec. Thanks to NUnit Team member Terje Sandstrom for PR 4799
None
None
First and foremost, we want to recognize the exceptional contributions of team members Manfred Brands and Steven Weerdenburg for their dedicated efforts on this release, particularly their work on improving type safety.
We also express our heartfelt gratitude to everyone who has contributed to this release by reporting bugs, suggesting enhancements, and providing valuable feedback. Your efforts help make NUnit better for the entire community.
A special thank you to the following reporters for identifying issues:
Christoph Christophe Chevalier Cincidial Joseph Musser
Leon Lux Manfred Brands MaxKot MCMrARM
Michael Render Michaela Maura Elschner mzh3511 Oleksandr Liakhevych
Raffael Botschen Sander Saurav-shres seesharks
Steven Weerdenburg Terje Sandstrom Wim van Gool
and to the commenters who engaged in discussions and offered further insights:
CharliePoole Chris Maddock Christoph Christophe Chevalier
Cincidial Harsh Jain Joseph Musser Leon Lux
Manfred Brands MaxKot Michael Render Michaela Maura Elschner
Mikkel Nylander Bundgaard Oleksandr Liakhevych PicNet Raffael Botschen
Rob Prouse rsjackson3 Sascha Bartl Saurav-shres
Sergio L. Steven Weerdenburg Terje Sandstrom Wim van Gool
This hotfix addresses an issue with asynchronous behavior introduced in version 4.2.0. It resolves a regression bug that affected the release.
This hotfix addresses an issue with asynchronous behavior introduced in version 4.2.0. It resolves a regression bug that affected the release.
This is a hotfix release for 4.2.0, fixing issues related to .NET Framework.
This is a hotfix release for 4.2.0, fixing issues related to .NET Framework.
4795 NUnit 4.2.0 is missing System.Buffers on .NET Framework.
4794 EqualConstraint fails with missing assembly references on .NET Framework since NUnit 4.2.
Nothing published for this version
Nothing published for this version
This is a hotfix release for three issues related to targeting windows targets, like net6.0-windows . If you don't use these targets, you can safely i
This is a hotfix release for three issues related to targeting windows targets, like net6.0-windows . If you don't use these targets, you can safely ignore this release.
For more details, see the information in the issues below:
4571 NUnit 4: dotnet test behaving differently locally vs on GH Actions (failing). Fixed by team PR 4574
4565 Unable to test project targeting net8.0-windows and win-x64 . Fixed by team PR 4569
4564 Tests not discovered for .NET Windows-specific TFM without Windows build number. Fixed by team PR 4569
All changes, see release notes
All changes, see release notes
This release is an incremental improvement of version 3, and can be used with the same runners as before, although a minor upgrade might be needed for some.
For the NUnit3TestAdapter , you will need version 4.5 to run tests with NUnit 4.
If you use the NUnit Console , you will need version 3.15.3 or later (but not any 3.16.X versions)).
The minimum target framework supported is now dotnet framework 4.6.2 , and .net 6.0 .
See the planning notes for more information about the changes.
See the migration guide for how to move your projects from NUnit 3 to NUnit 4.
All issues marked "Fixed by team" has been done by the members of the framework team .
Issues marked "Thanks to" has been done by external contributors. We appreciate all the work all these people have been doing!
There are 112 issues fixed in this release.
4551 Make ConstraintExpression.AnyOf() accept IEnumerable. Thanks to Ivan Gurin for PR 4552
4521 Proposal: Async test case sources . Fixed by team PR 4389
4489 Use buffer pooling when calculating partition filters. Fixed by team PR 4500
4476 Add support to StreamsComparer for non-seek able streams. Thanks to Michael Render for PR 4483
4433 Add string syntax attributes (.NET 7+). Thanks to Michael Render for PR 4425
4431 Improving error message handling and performing assert consolidation. Fixed by team PR 4430
4421 Add support for native .NET-6.0 target . Fixed by team PR 4431
4413 Assert.That methods should autogenerate message, if null. Fixed by team PR 4419
4394 Expand NUnitEquality to use Equality of all Properties. Fixed by team PR 4436
4391 Hash/Partition based Test Filter. Thanks to Andrew Armstrong for PR 4392
4385 Add support for Test Cancellation. Fixed by team PR 4386
4355 Allow Is.AnyOf to be called with arrays or other collections. Fixed by team PR 4356
4149 Distribute optimized framework builds with easy debugging. Thanks to Marko Lahma for PR 4350
4144 Stderr/Console.Error will hold back Unicode escaped log messages. Thanks to Max Schmitt for PR 4145
4101 Expose ExpectedResult to the TestContext. Fixed by team PR 4239
4086 Perform case-insensitive string comparisons in-place. Fixed by team PR 4088
4053 Cache method discovery by migrating PR 4034 to main. Fixed by team PR 4208
3984 Add net6.0 targets. Fixed by team PR 3988
3941 PlatformAttribute has AllowMultiple = true, but that doesn't work. Fixed by team PR 3926
3936 Is there any way we could make use of CallerArgumentExpressionAttribute?. Fixed by team PR 4419
3899 Allow randomizing 'Guid' test arguments with [Random]. Thanks to Arnaud TAMAILLON for PR 3951
3866 SupportedOSPlatform. Fixed by team PR 3926
3856 Theories in nested Testfixtures. Thanks to Felix Kr”ner for PR 3857
3718 Improve readability of "assert failed" message for DictionaryContainsKeyValuePairConstraint WithValue(). Fixed by team PR 3778
3457 Add DefaultConstraint. Thanks to Oleksandr Liakhevych for PR 3781
3432 Assert.That is blocking and might lead to deadlock when used with WCF.. Thanks to Gavin Lambert for PR 4322
3391 TestCaseSource to recognize new async streams. Fixed by team PR 4538
3376 Nullable Reference Types annotations. Fixed by team through multiple PRs. . Fixed by team PR 3488
3043 Add AsyncEnumerable support for TestCaseSource, ValueSource, and TestFixtureSource. Fixed by team PR 4538
2843 Replacing ThrowsAsync with a composable async alternative. Thanks to Gavin Lambert for PR 4322
1459 Support for params keyword in parameterized test fixtures. Thanks to Leo Shine for PR 4478
4391 Hash/Partition based Test Filter. Thanks to Andrew Armstrong for PR 4392
3936 Is there any way we could make use of CallerArgumentExpressionAttribute?. Fixed by team PR 4419
3798 Support abstract methods marked as tests. Fixed by team PR 4490
4554 SetUpFixture has stopped working going from NUnit 3.13.3 to 3.14.0/4.0.0-beta.1. Fixed by team PR 4555
4532 Assert.That no longer allows 'null' message. Fixed by team PR 4533
4529 Forwardport: Missing stack trace when exception occurs during OneTimeSetUp #2466. Fixed by team PR 4469
4528 Forwardport: Is.SupersetOf and Is.SubsetOf no longer work with ImmmutableDictionary<TKey,TValue> in NUnit 3.13.3 #4095. Fixed by team PR 4098
4522 Missing stack trace when exception occurs during OneTimeSetUp #2466. Fixed by team PR 4469
4491 NUnit 4.0 fails when [Repeat] is present and test passes. Fixed by team PR 4517
4484 String not-regex constraint succeeds non- string actual value. Thanks to Michael Render for PR 4492
4450 Missing comparison failure details for EqualTo when comparing two collection. Thanks to Ashish Dawale for PR 4502
4423 Chaining multiple collection asserts with index. Thanks to Daniel Waechtler for PR 4480
4400 Within throws ArgumentException if null value is involved. Thanks to Ashish Dawale for PR 4482
4319 TextRunner accidentally disposes System.Out. Thanks to Norm Johanson for PR 4317
4308 Random attribute with Distinct and wide range causes test to disappear. Thanks to Russell Smith for PR 4316
4264 Assert.Multiple method should fail only if a contained assertion failed. Thanks to Samuel Delarosbil for PR 4313
4259 Bug: Assert.That(IEnumerable<Type>, Has.All.Property(nameof(Type.Namespace)) fails.. Fixed by team PR 4260
4255 InternalTrace.Initialize fails with Nullref exception. Fixed by team PR 4256
4246 Stack overflow when running tests on machine with Thai regional format. Fixed by team PR 4345
4243 Type args are not deduced correctly for parameterized fixtures. Thanks to Samuel Delarosbil for PR 4307
4237 Bogus check for Windows 11. Fixed by team PR 4374
4158 SetupFixture should have an AttributeUsage of Inherited = false . Thanks to TillW for PR 4222
4107 Incorrect type specified for Values attribute fails unrelated tests. Fixed by team PR 4133
4096 NUnit.Framework 3.13.2 introduced a breaking change that conceals problems with tests. Fixed by team PR 4133
3964 DictionaryContainsKeyValuePairConstraint doesn't work with IDictionary<TKey, TValue> . Thanks to Louis Zanella for PR 4014
3961 OneTimeTearDown runs on a new thread with mismatched Thread Name and Worker Id. Thanks to EraserKing for PR 4004
3953 Dispose is not called on test fixtures with LifeCycle.InstancePerTestCase without TearDown method. Fixed by team PR 3963
3872 Add support for ref bool , ref bool? , in bool , and in bool? when using NUnit.Framework.ValuesAttribute . Thanks to Samuel Delarosbil for PR 4304
3868 Order attribute skips classes with multiple test fixtures. Thanks to Samuel Delarosbil for PR 4304
3867 nunit Framework tests do not run with "dotnet test" nor inside VS2019 (Windows). Fixed by team PR 4315
3858 Running tests with ITestAction attributes leaks memory. Thanks to Marko Lahma for PR 4300
3811 Incorrect summary comments on Warn.If overloads. Fixed by team PR 3845
3735 Parallelizable TestFixtureSource with TestFixtureData not running in parallel. Thanks to Julien Richard for PR 4099
3449 Assert.AreEqual overloads for nullable double are not useful. Thanks to Anton Ashmarin for PR 3780
3274 Overridden tests are not discovered in NUnit 3.12.0. Fixed by team PR 4490
3215 Better error message for generic test where type parameter cannot be determined. Thanks to Ove Bastiansen for PR 4382
2870 CollectionTally (EquivalentTo) should throw for non-transitive comparisons. Thanks to Russell Smith for PR 4312
2841 DelayedConstraint calls delegate twice. Fixed by team PR 4488
2835 Control character encoding is inconsistent between TestCase[Source] and TestFixture[Source]. Fixed by team PR 4498
2436 Properties on System.Type cannot be used with either property constraint. Fixed by team PR 4259
1428 NUnitLite package always installs both Program.cs and Program.vb. Fixed by team PR 3952
4539 Upgrade to latest analyzers package and fix the warnings.
4434 Fixing the classic asserts. Fixed by team PR 4438
4416 Move classic asserts into its own project . Fixed by team PR 4417
4380 Consistently use _ prefix for field names. Fixed by team PR 4387
4378 Update code base to use 'is (not) null' consistently. Fixed by team PR 4379
4376 Update code base to explicitly specify accessibility. Fixed by team PR 4377
4364 Add NUnit.Analyzer to our test projects. Fixed by team PR 4366
4111 Is.Empty constraint on complex collections might hide bugs. Thanks to Felix Kr”ner for PR 4120
4051 Update codebase to use Array.Empty<T>. Thanks to Marcin Jedrzejek for PR 4127
3932 Make Numerics class internal. Thanks to TillW for PR 4205
4503 Add NET8 target for the framework tests. Thanks to Ashish Dawale for PR 4511
4432 Fix null message in internal static string? ExtendedMessage(string methodName, string? message, string actualExpression, string constraintExpression). Fixed by team PR 4430
4331 Add testing to "Accumulate further failures if any on AssertMultiple instead of throwing". Thanks to Samuel Delarosbil for PR 4313
4212 Add Windows11 support to the Platform attribute. Fixed by team PR 4213
4170 Add .NET7 as a build target for the test suite . Fixed by team PR 4224
4078 THREAD_ABORT not properly set. Fixed by team PR 4079
4075 Remove unnecessary allocations in NUnitEqualityComparer. Fixed by team PR 4076
4072 Use pattern matching in Constraints to avoid unnecessary casts. Fixed by team PR 4073
4065 Use pattern matching in the comparers. Fixed by team PR 4066
4055 Use static Regex.IsMatch in ValueMatchFilter to take advantage of caching. Fixed by team PR 4056
4049 Simplify property retrieval in DefaultTestAssemblyBuilder.Build(). Thanks to Scott Buchanan for PR 4054
3935 Numerics.IsFixedPointNumeric should return false for decimals. Thanks to Wellington Balbo for PR 3942
3789 Change copyright header on files. Fixed by team PR 3795
3764 Switch to the dotnet tool version of Cake. Fixed by team PR 3835
3588 Audit string equality comparisons and consider changes for v4. Fixed by team PR 3770
2485 Remove\Trim copyright on individual files. Fixed by team PR 3795
4504 Remove appveyor build. Fixed by team PR 4509
4465 Update cake version in build scripts. Fixed by team PR 4540
4036 Drop net45 build target in nunit4. Fixed by team PR 4050
3984 Add net6.0 targets. Fixed by team PR 3988
3980 Drop netcoreapp2.1 targets. Fixed by team PR 3988
3812 Add GitHub Actions. Fixed by team PR 3819
3764 Switch to the dotnet tool version of Cake. Fixed by team PR 3835
3758 Drop .NET 3.5 Build Targets. Fixed by team PR 3760
2485 Remove\Trim copyright on individual files. Fixed by team PR 3795
4415 Remove use of params for messages. Fixed by team PR 4419
4036 Drop net45 build target in nunit4. Fixed by team PR 4050
3980 Drop netcoreapp2.1 targets. Fixed by team PR 3988
3769 Remove code marked "Obsolete". Fixed by team PR 3836
3758 Drop .NET 3.5 Build Targets. Fixed by team PR 3760
3708 Drop .NET 4.0 Build Target. Fixed by team PR 3760
3410 Consider deprecating NUnitEqualityComparer.AreEqual optional bool parameter. Thanks to TillW for PR 3960
3132 Remove AssertionHelper and AssertionHelperTests. Fixed by team PR 3836
3869 Copyright notices for third-party code. Thanks to Lennart Brggemann for PR 4444
3301 [HandleProcessCorruptedStateExceptions] has no effect unless we disable partial trust. Fixed by team PR 4398
4416 Move classic asserts into its own project . Fixed by team PR 4417
4415 Remove use of params for messages. Fixed by team PR 4419
Also note that there are some breaking changes in the API for NUnit.
Ref Issue 4610 .
Constraint.Description: It is now an abstract get property, earlier a virtual with protected setter.
PrefixConstraint.DescriptionPrefix: It is now an abstract get property, earlier a virtual with protected setter.
4527 Backport: NUnit.Framework 3.13.2 introduced a breaking change that conceals problems with tests. Fixed by team PR 4104 ( backport of issue 4096 b…
Total number of issues fixed in this release is : 16
4046 Backport .NET6 test infra + build improvements from #3984 onto v3.13 branch. Fixed by team PR 4077 ( backport of issue 3984)
4009 Performance degradation on many tests. Thanks to Marko Lahma for PR 4034
3859 Proper test result exception message when hitting TimeoutAttribute . Fixed by team PR 4118
3601 Nunit 3.10.1.0 + ReSharper 2020.1.4: Test execution delayed by ~60seconds . Thanks to Marko Lahma for PR 4034
2729 Proposal: Async test case sources. Fixed by team PR 4390
4527 Backport: NUnit.Framework 3.13.2 introduced a breaking change that conceals problems with tests. Fixed by team PR 4104 ( backport of issue 4096 by pr 4133)
4525 Backport: SetupFixture should have an AttributeUsage of Inherited = false . Thanks to TillW for PR 4223 ( backport of issue 4158 by pr 4222)
4523 Backport: Stack overflow when running tests on machine with Thai regional format. Fixed by team PR 4346 ( backport of issue 4246 by pr
4324 Backport to v3: TextRunner accidentally disposes System.Out. Thanks to Norm Johanson for PR 4325 ( backport of issue 4319 by pr 4317)
4095 Is.SupersetOf and Is.SubsetOf no longer work with IImmmutableDictionary<TKey,TValue> in NUnit 3.13.3. Fixed by team PR 4097
3859 Proper test result exception message when hitting TimeoutAttribute . Fixed by team PR 4118
3710 Calling NUnitLite from LINQpad, can't parse assembly path. Thanks to Norm Johanson for PR 4325
2466 Missing stack trace when exception occurs during OneTimeSetUp. Fixed by team PR 4467
None
4524 Backport: Add .NET7 as a build target for the test suite #4170. Fixed by team PR 4302 ( backport of issue 4170 by pr 4224)
4293 .NET5 Test Suite is failing on Azure DevOps for Windows. Fixed by team PR 4296
2973 Write up recommended way to test and link it from the readme. Thanks to Bruno Juchli for PR 2971
None
None
3841 Breaking change: Is.SupersetOf with ValueTuple requires IComparable in NUnit 3.13.2
This release includes several performance enhancements. @lahma provided a massive speed improvement for large, parametrized test suites. In addition, equivalency tests with large unsortable collections run faster by determining if the collections are sortable before attempting to sort them.
We've added several fixes for .NET 6.0 and we've stopped testing NUnit against .NET Core 2.1 which is now out of support.
There are also several fixes for the new FixtureLifeCycle feature and other smaller bug fixes and performance improvements.
2963 Flakey tests in FrameworkControllerTests
3643 Assert.Pass(message) produces "reason" in XML-Result
3841 Breaking change: Is.SupersetOf with ValueTuple requires IComparable in NUnit 3.13.2
3843 IDisposable & InstancePerTestCase: Object created for OneTimeSetUp is not disposed
3898 NUnit 3.13.2 : LessThanOrEqualTo fails on a case which should succeed
3903 Backport race condition fix (PR 3883)
3904 Backport fix for "IDisposable & InstancePerTestCase" (PR 3843)
3929 Fix high precision decimal calculations in v3.13 (#3898)
3959 Marked 'NUnitEqualityComparer.AreEqual(object, object, Tolerance, bool)' as obsolete
3962 Ensure that AfterTest always runs in AfterTestCommand
3971 Backport "Add missing [DoesNotReturn] annotations" from #3958
3976 Equivalency fallback for non-IComparable types can leave CollectionTally in corrupt state
3998 Eagerly determine when a set is unsortable
3999 Numeric comparison fails when it should succeed.
4000 OverflowException comparing large double values
4007 Eagerly detect sortable types for equivalency tests in 3.13.x
4030 IsEmpty doesn't work with new .NET6 PriorityQueue
4032 Tests won't run with an abstract base class that has a TestCaseFixtureSource
4033 Recognized private members in base class for Source attributes
4034 Improve method discovery and filtering performance
4041 Minimize empty array allocations via centralized helper for pre-net46
4043 Stop testing the framework against netcoreapp21 in v3.13 branch
4045 Drop netcore2.1 as a target (backport #3986)
4058 Remove TopLevel property from ValueMatchFilter
This release fixes a new issue with the FixtureLifeCycle attribute where IDisposable test fixtures were not being disposed properly. As always, @gleb-
This release fixes a new issue with the FixtureLifeCycle attribute where IDisposable test fixtures were not being disposed properly. As always, @gleb-osokin has been a great help with this new feature.
It also fixes a long-standing performance issue with CollectionAssert.AreEquivalent and the CollectionEquivalentConstraint when comparing large collections. The deep comparison that NUnit performs on the two collections will always have a worst case bound of O(n^2) but we have optimized it so that the majority of use cases will be closer to O(n).
We've also made significant optimizations to the OR filters for selecting tests using their full name. This dramatically improves test performance for large code bases that use dotnet test. Thanks to @pakrym for his help with this.
This release addresses several misses with the new FixtureLifeCycle attribute, switches to using SourceLink and NuGet snupkg packages for debugging in
This release addresses several misses with the new FixtureLifeCycle attribute, switches to using SourceLink and NuGet snupkg packages for debugging into NUnit from your unit tests. It also addresses issues with the time format of ignored and explicit tests in the test results file.
Nothing published for this version
Nothing published for this version
Nothing published for this version
Added a namespace to the props file included in the NuGet package to make it compatible with versions of Visual Studio prior to VS 2017.
Added a namespace to the props file included in the NuGet package to make it compatible with versions of Visual Studio prior to VS 2017.
Nothing published for this version
Nothing published for this version
This release fixes two critical regressions in the 3.8 release. The first caused the console runner to crash if you are using test parameters. The sec
This release fixes two critical regressions in the 3.8 release. The first caused the console runner to crash if you are using test parameters. The second issue caused collection constraints checking for multiple items in a collection to fail.
Nothing published for this version
This is a hotfix release that addresses occasional hangs when using test parallelization and fixes crashes in NCrunch prior to version 3.9.
This is a hotfix release that addresses occasional hangs when using test parallelization and fixes crashes in NCrunch prior to version 3.9.
Nothing published for this version
This is a hotfix release of the framework that addresses critical issues found in the 3.6 release.
This is a hotfix release of the framework that addresses critical issues found in the 3.6 release.
Nothing published for this version
Nothing published for this version
A new option, --list-extensions, will display all the engine extensions that have been installed by the engine.
Nothing published for this version
The output and error files are now thread safe when running tests in parallel
IEquatable<T>Nothing published for this version
The Nunit.Runners NuGet package was updated to become a meta-package that pulls in the NUnit.Console package
### Issues Resolved * 635 Mono 4.0 Support
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Your coding agent can read these notes before it upgrades. Set up the MCP server →