Kategorien: Alle - compatibility

von Dee O'Dell Vor 4 Jahren

288

CHANGES

The latest version of NUnit, released on March 12, 2018, introduces a .NET Standard 2.0 version of the framework, reinstating numerous previously unavailable features such as parallelism, timeouts, and various directory-based assertions.

CHANGES

NUnit 3.8 - August 27, 2017

This release removes several methods and attributes that were marked obsolete in the

original 3.0 release. Support for iOS and Android has been improved.

An issue that caused unit tests to run slower was addressed as was a bug that prevented

the use of Assert.Multiple in async code.

The Order attribute can now also be applied to the class level to set the order

that test fixtures will be run.

2332 Update build script to use NUnitConsoleRunner v3.7.0
2179 Some NUnit project's tests fail on systems with CultureInfo other than en
2335 Execute OneTimeTearDown as early as possible when running fixtures in parallel
2244 Add KeyValuePair to the default formatters
2062 TestCaseSource attribute causes test to pass when source is not defined
2298 Write TestParametersDictionary to xml result file in readable format
2201 Invalid platform name passed to PlatformAttribute should mark test NotRunnable
2348 Can't use Assert.Multiple with async code
2195 Contains.Substring with custom StringComparison
2370 TestCaseAttribute can't convert int to nullable long
2237 System.Runtime.Loader not available for iOS/Android
2251 Randomizer.NextGuid()
2299 NUnitLite NuGet package no longer installs NUnit NuGet package
1151 Include differences in output for Is.EquivalentTo
2242 Running tests directly should never surface a NullReferenceException
2253 Parallelizable(ParallelScope.Fixtures) doesn't work on a TestFixture
2353 Provide additional Result information through TestContext
2276 Intermittent test failures in Travic CI: TestContextTests
1674 InRange-Constraint must work with object
1996 Timeout does not work if native code is running at the time
2304 Revert accidental doc removal
1324 Remove CollectionContainsConstraint
2219 Remove Obsolete Attributes
2196 Expose ParallelizableAttribute (and other attribute) constructor arguments as properties
2261 When an assembly is marked with ParallelScope.None and there are Parallelizable tests NUnit hangs
2361 NUnit Parallelizable and OneTimeSetUp with no namespace results in single-threaded test execution
2292 Is.Ordered.By() with a field throws NullReferenceException
2288 Killing thread cancels test run
2208 StackFIlter trims leading spaces from each line
2312 Prevent crash on invalid --result parsing in NUnitLite
2213 SetCultureAttribute: CultureInfo ctor should use default culture settings
2342 Remove deprecated Is.String* Constraints
2360 Obsolete CollectionContainsConstraint Constructors
1670 Attaching files to the test result
2217 Console runner performance varies wildly depending on environmental characteristics
2305 Correct misprint ".con" -> ".com"
345 Order of Fixture Execution
2004 Has.One as synonym for Has.Exactly(1).Items
2358 Get framework to build under Mono 5.0
2281 Add type constraint for Throws and any method requiring Exception
2225 OneTimeTearDown and Dispose Ordering
2254 EqualTo on ValueTuple with Nullable unexpected
1851 TestCaseSource unable to pass one element byte array
2269 Parallelizable and NonParallelizable attributes on setup and teardown silently ignored
2313 Incorrect xmldoc on RetryAttribute
2144 Allow option on RandomAttribute to produce distinct values

NUnit 3.7 - May 29, 2017

This release of NUnit expands on parallel test execution to allow test methods to

be run in parallel. Please see the [Parallelizable Attribute](https://github.com/nunit/docs/wiki/Parallelizable-Attribute)

for more information.

NUnit 3.7 also drops the Portable build of the framework and replaces it with a

.NET Standard 1.3 version to compliment the .NET Standard 1.6 version. This change

enables several constraints and other features in the .NET Standard builds that

weren't available in portable like Path and Directory based asserts.

The AssertionHelper class has been deprecated because it is seldom used and has

not received any of the updates that Asserts and Constraints receive. If your code

is using the AssertionHelper class, we recommend that you migrate your asserts.

2092 Convert Portable library to .NET Standard 1.3
1859 ConcurrentQueue is duplicate with System.Threading.dll package
2191 System.Reflection.TargetInvocationException with nunit3-console --debug on Mono
2052 NullReferenceException with TestCaseSource if a property has no setter
2165 Trying to install NUnit 3.6.1 on .NET Framework asks for download of 20 more packages
2050 Creation of TestExecutionContext should be explicit
391 Multiple Assertions
2157 Getting WorkerId inside Assert.Throws / DoesNotThrow returns null instead of previous non-null value
2061 TestContext.WorkDirectory not initialized during build process
1830 Add --labels switch changes to nunilite and nunitlite tests
2007 3.6 Multiple assertion backwards compatibility
2040 Cannot catch AssertionException
2095 Extend use of tolerance to ComparisonConstraints
1997 Remove unused --verbose and --full command line options
1973 Implemented TestExecutionContext to use AsyncLocal<> for NETSTANDARD1_6
1983 Add missing ConstraintExpression.Contain overload
2150 Add portable-slow-tests to Cake file
652 Add ability to execute test actions before SetUp or OneTimeSetUp
1934 NullReferenceException when null arguments are used in TestFixtureAttribute
1990 Add namespace filter
2110 NullReferenceException when getting TestDirectory from TestContext
2121 Chained PropertyConstraint constraints report incorrect ActualValue
2045 NUnitlite-runner crashes if no file is provided
1918 Changing DefaultFloatingPointTolerance breaks tests running in parallel
1952 TestContext.Out null when used in task with .NET Core
2010 Add DelayedConstraint in NetStandard 1.6 build
1971 Switch CHANGES.txt to Markdown
1877 Resolve differences between NUnit Console and NUnitLite implementations of @filename
2034 Remove silverlight project - no longer used
1999 Author Tests assume ICustomAttributeProvider.GetCustomAttributes return order is defined
2186 Replace special characters as part of converting branch names to package versions
2020 Better message when timeout fails
2173 Remove PreTestAttribute and PostTestAttribute
1238 Feature request: Print LoaderExceptions when fixture loading fails
2035 NullReferenceException inside failing Assert.That call
1975 TestFixtureSource doesn't work with a class that has no namespace
2079 Make TestMethod.Arguments public or otherwise accessible (e.g. TestContext)
2131 Remove "Version 3" suffix from NUnitLite NuGet Package
2158 Update SetupFixtureAttribute XML Docs
2115 Mark AssertionHelper as Obsolete
2170 Cake build fails if only Visual Studio 2017 installed
2003 Better user info about ParallelizableAttribute and ParallelScope
2152 Allow attaching files to TestResults
2147 Test Assembly using NUnitLite & Nunit 3.6.1 hangs under .NET Core when `--timeout` is supplied on command line
1963 Investigate removing SpecialValue
1896 Test has passed however Reason with an empty message is printed in the xml
1363 Make Timeouts work without running test on its own thread
2169 Incorrect xmldocs for SetUpAttribute
2132 TestFixtureTests.CapturesArgumentsForConstructorWithMultipleArgsSupplied assumes order of custom attributes
1000 Support multiple Author attributes per test
2080 Allow comments in @FILE files
1932 NUnit Warn class should be removed from stack trace by filter
2023 Ability to abort threads running a message pump
2087 Enhance error message: Test is not runnable in single-threaded context. Timeout
2025 NullReferenceException using Is.EqualTo on two unequal strings
1474 Several SetUpFixtures at the same level may be active at the same time
164 Run test methods within a fixture in parallel
2159 Prevent crash in .NET standard with log file path
1819 TestContext.Progress.Write writes new line
1096 Treat OneTimeSetup and OneTimeTearDown as separate work items
1885 Test parameter containing a semicolon
2099 Include type in start-suite/start-test report elements
2031 Limit Language level to C#6
2005 Exclude empty failure messages from results xml
1965 TestContext does not flow in async method
2154 Fix execution of non-parallel test fixtures
2143 Non-parallel fixture with parallel children runs in parallel with other fixtures
1143 NUnitLite - Explore flag does not apply where filter to output
2030 Add method to mark tests as invalid with a reason

NUnit 2.9.1 - August 27, 2009

417559 Add Ignore to TestFixture, TestCase and TestCaseData
417564 TimeoutAttribute on Assembly
417560 Merge Assert.Throws and Assert.Catch changes from NUnit 2.5.2
400502 NUnitEqualityComparer.StreamsE­qual fails for same stream
417557 Add SetUICultureAttribute from NUnit 2.5.2
400510 TestCaseData variable length ctor drops values
400508 TestCaseSource attirbute is not working when Type is given
Created a separate project for the framework and framework tests
Changed license to MIT / X11
Created Windows installer for the framework

NUnit 3.4 - June 25, 2016

The .NET 2.0 version of the framework now includes LINQ. If your tests target .NET 2.0, you can now use LINQ queries in your tests
Test case names will only be truncated if the runner requests it or it is overridden on the command line with the --test-name-format option
Improvements in comparing equality using `IEquatable`
The TeamCity event listener has been separated out into an engine extension
Fixes for Mono 4.4
Additional fixes to reduce memory usage
Fixed numerous issues around thread safety of parallel test runs
There is a new --params command line option that allows you to pass parameters to your tests which can be retrieved using TestContext.Parameters
Another new command line option --loaduserprofile causes the User Profile to be loaded into the NUnit Agent process.
1528 Use of Sleep(0) in NUnit
1441 Add Linq for use internally in .NET 2.0 code
1520 Detect Portable, Silverlight and Compact and give error message
1430 TestObjects are retained for lifetime of test run, causing high memory usage
1476 Examine need for "synchronous" events in event queue
1446 TestOrderAttributeTests is not public
1425 Lazy initialization of OutWriter in TestResult is not thread safe
1139 Nunit3 console doesn't show test output continously
1582 Mono 4.4.0 Causes Test Failures
1432 NUnit hangs when reporting to TeamCity
1483 Remoting exceptions during test execution
1513 Add new teamcity extension to packages
1617 Load user profile on test runners
1560 Engine writes setting file unnecessarily
1457 Set the 2.0 build to ignore missing xml dcoumentation
1484 Comparing Equality using `IEquatable` Should Use Most Specific Method
1470 Make EventQueue and associated classes lock-less and thread safe
1241 Make TestDirectory accessible when TestCaseSource attributes are evaluated
1423 SingleThreaded attribute should raise an error if a thread is required
1379 Console returns 0 for invalid fixtures
1366 Classname for inherited test is not correct
1549 Changing default behavior for generating test case names
1543 Blank name attribute in nunit2-formatted XML result file test-run element
1555 EndsWith calls in Constraint constructor can cause major perf issues
1439 EqualConstraint does Not use Equals Override on the Expected Object
1605 TeamCity package has no pre-release suffix
1464 TNode.EscapeInvalidXmlCharacters recreates Regex continually
1551 Path in default .addins file for ConsoleRunner package may not exist
1422 Include TestListWithEmptyLine.tst in ZIP Package
1493 NUnit 2 test results report ParameterizedMethod but should be ParameterizedTest
1434 TestResult class needs to be thread-safe
1597 Move Portable agent to its own repository
1436 CurrentFramework and Current Platform need to be more thread-safe
1427 Engine extensions load old packages
1573 Move Nunit.Portable.Agent to new Repo
720 Need a way to get test-specific command-line arguments at runtime
1593 Nunit Console Runner 3.2.1 and Mono 4.4 throws RemotingException
1548 Invalid Exception when engine is in a 32-bit process
1579 NUnit v3 dangerously overrides COMPLUS_Version environment variable
1481 TestCase with generic return type causes NullReferenceException
1435 Parallel queue creation needs to be thread-safe
1518 NUnit does not send the "testStarted" TeamCity service message when exception was thrown from SetUp/OneTimeSetUp
1371 Support `dotnet test` in .NET CLI and .NET Core
1010 Need to control engine use of extensions
1547 Create separate assembly for System.Linq compatibility classes
1463 Should TestResult.AssertCount have a public setter?
1607 nunit.nuget.addins discovery pattern is wrong then restored through project.json
329 (CLI) Runner does not report AppDomain unloading timeout
1450 Silverlight detection doesn't work when building on 32-bit OS
1225 The --teamcity option should really be an extension
1507 NullReferenceException when null arguments are used in TestFixtureAttribute

NUnit 3.7.1 - June 6, 2017

This is a hotfix release that addresses occasional hangs when using test parallelization

and fixes crashes in NCrunch prior to version 3.9.

2209 NUnit occasionally hangs when parallelizable TestFixture has OneTimeSetUp and OneTimeTearDown
2205 Ncrunch: System.Xml.XmlException: Root element is missing, when adding NUnit 3.7.0

NUnit 3.5 - October 3, 2016

This is the first version of NUnit where the framework will be released separately from the

console runner, engine and other extensions. From this point forward, the NUnit Framework will be

released on its own schedule that is not bound to that of any other NUnit project and version numbers

may diverge over time.

This is also the first release where the NUnit Framework will not be included in the installer. Only

the console runner, engine and extensions will be available as an MSI installer. We recommend that you

use the NUnit NuGet packages for the framework, but a ZIP file with the binaries will also be available.

1739 Create separate copies of MockAssembly for framework, engine and extensions
1663 Find way to hide NUnit.Compatability.Path from intellisense
1805 Error message "arguments provided for method not taking any" seems incomplete / doesn't make much sense
1610 Refactor dependencies in build.cake
1106 Move various Assembly Info files under Properties for CF
1751 Serializable attribute exists in both System.Runtime.Serialization.Formatters and nunit.framework
1575 Escaping control chars in custom message
1598 Split framework and console/engine into separate projects
1683 Existence of SerializableAttribute in .NET Core
1615 Appveyor error in TestCF
1800 Remove Console/Engine projects from nunit.linux.sln
1693 2 unit tests fail due to localization
1641 Create OSX CI Build on Travis
1596 Eliminate code sharing across projects to be split
1815 Prevent NullReferenceException in SubPathConstraint
1775 Support NUnit assertions in partial trust code.
144 Pass a `Func` to lazily evaluate an exception message
1716 Move installer to new repository
1479 Don't enforce [Timeout] when debugger is attached
1723 Remove Cake target TestAll
1540 Remove old .NET Core Projects
995 Enable Warning as Error
1640 When submitting only part of optional parameters, all are overriden by defaults
1334 Add Assert.Zero and Assert.NotZero
1717 Change suffix for master builds
1553 Allow ordering tests to be done in multiple properties
1681 NUnitLite under .net core doesn't support TeamCity output
1621 Remove console and command-line option files from common
Added Assert.Zero and Assert.NotZero methods
Added the ability to Assert on the order of multiple properties in a collection
Tests with a Timeout will no longer timeout while you are debugging
You can now pass a `Func` to Asserts to lazily evaluate exception messages

NUnit 3.0.0 Beta 1 - March 25, 2015

A new Constraint, DictionaryContainsKeyConstraint, may be used to test that a specified key is present in a dictionary.
String arguments used in test case names are now truncated to 40 rather than 20 characters.
The class and method names of each test are included in the output xml where applicable.
The Silverlight runner now displays output in color and includes any text output created by the tests.
LevelOfParallelizationAttribute has been renamed to LevelOfParallelismAttribute.
We no longer create a separate framework build for .NET 3.5. The 2.0 and 3.5 builds were essentially the same, so the former should now be used under both runtimes.
There is now a master windows installer for the framework, engine and console runner.
440 Automatic selection of Test Engine to use
487 NUnitLite can't load assemblies by their file name
318 TestActionAttribute: Retrieving the TestFixture
482 nunit-console has multiple errors related to -framework option
541 Console help doesn't indicate defaults
534 Add classname and methodname to test result xml
488 Async setup and teardown still don't work
450 Create master install that includes the framework, engine and console installs
512 Drop the .NET 3.5 build
509 Under linux, not all mono profiles are listed as available
530 Color display for Silverlight runner
485 Can't run v2 tests with nunit-console 3.0
484 Missing file in NUnit.Console nuget package
224 Silverlight Support
497 Framework installer shold register the portable framework
483 Adds constraint for asserting that a dictionary contains a particular key
508 Travis builds with failure in engine tests show as successful
531 Display text output from tests in Silverlight runner
528 V2 FrameworkDriver does not make use of passed in TestFilter
504 Option --workers:0 is ignored
477 Assert does not work with ArraySegment
523 Provide an option to disable shadowcopy in NUnit v3
517 V2 FrameworkDriver does not make use of passed in TestEventListener
428 Add ExpectedExceptionAttribute to C# samples
The console now defaults to not using shadowcopy. There is a new option --shadowcopy to turn it on if needed.
The V2 framework driver now uses the event listener and test listener passed to it by the runner. This corrects several outstanding issues caused by events not being received and allows selecting V2 tests to be run from the command-line, in the same way that V3 tests are selected.
The engine API has now been finalized. It permits specifying a minimum version of the engine that a runner is able to use. The best installed version of the engine will be loaded. Third-party runners may override the selection process by including a copy of the engine in their installation directory and specifying that it must be used.

NUnit 3.0.0 Alpha 1 - September 22, 2014

Action Attributes have been added with the same features as in NUnit 2.6.3.
Does prefix operator supplies several added constraints.
TestContext now has a method that allows writing to the XML output.
TestContext.CurrentContext.Result now provides the error message and stack trace during teardown.

Console Issues Resolved (Old nunit-console project, now combined with nunit)

38 Confusing Excluded categories output
6 System.NullReferenceException on start nunit-console-x86
5 CI Server for nunit-console
2 Failure in TestFixtureSetUp is not reported correctly
24 'Debug' value for /trace option is deprecated in 2.6.3
21 NUnitFrameworkDriverTests fail if not run from same directory
Legacy suites are no longer supported
Assert.NullOrEmpty is no longer supported (Use Is.Null.Or.Empty)
MsBuild is now used for the build rather than NAnt
The framework test harness has been removed now that nunit-console is at a point where it can run the tests.
180 Errors in Linux CI build
6 Log4net not working with NUnit
203 Combine framework, engine and console runner in a single solution and repository
181 Replace NAnt with MsBuild / XBuild
169 Design and implement distribution of NUnit packages
188 No output from NUnitLite when selected test is not found
171 Assert.That should work with any lambda returning bool
156 Accessing multiple AppDomains within unit tests result in SerializationException
219 Teardown failures are not reported
197 Deprecate or remove Assert.NullOrEmpty
54 Store message and stack trace in TestContext for use in TearDown
167 Create interim documentation for the alpha release
209 Make Ignore attribute's reason mandatory
175 Test Harness should return an error if any tests fail
193 TestWorkerTests.BusyExecutedIdleEventsCalledInSequence fails occasionally
17 No allowance is currently made for nullable arguents in TestCase parameter conversions
112 Implement Action Attributes
202 Eliminate legacy suites
189 Add string operators to Does prefix
183 Standardize commandline options for test harness
163 Add --trace option to NUnitLite
215 Running 32-bit tests on a 64-bit OS
33 TestCaseSource cannot refer to a parameterized test fixture
13 Standardize commandline options for nunitlite runner
111 Implement Changes to File, Directory and Path Assertions

NUnit 3.0.0 Release Candidate 3 - November 13, 2015

1015 Specifying .nunit project and --framework on command line causes crash
1003 Delete TeamCityEventHandler as it is not used
856 Extensions support for third party runners in NUnit 3.0
1017 Remove Assert.Multiple from framework
The engine now only sets the config file for project.nunit to project.config if project.config exists. Otherwise, each assembly uses its own config, provided it is run in a separate AppDomain by itself.

NOTE: It is not possible for multiple assemblies in the same AppDomain to use different configs. This is not an NUnit limitation, it's just how configs work!

NUnit 3.10.1 - March 12, 2018

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.

NUnit 2.9.3 - October 26, 2009

432805 Some Framework Tests don't run on Linux
440109 Full Framework does not support "Contains"
Support for old style tests has been removed
Created new API for controlling framework
New builds for .Net 3.5 and 4.0, compact framework 3.5
New adhoc runner for testing the framework

NUnit 3.9 - November 10, 2017

This release addresses numerous parallelization issues that were introduced in 3.8

when method level parallelization was added. Most of the parallelization issues

resolved were tests never completing when using some combinations of parallel tests

and `ApartmentState` not being properly applied to tests in all cases.

2426 Regression in 3.8.1: ApartmentAttribute no longer works when applied to an assembly
2289 ResolveTypeNameDifference does not handle generic types well
2398 NUnit CI spurious failures, NUnit.Framework.Internal.ThreadUtilityTests.Kill
2412 Using fluent syntax unintentionally removed in 3.8
1905 SetupFixture without namespace will make assembly-level Parallelizable attribute useless
2551 CollectionItemsEqualConstraint is missing Using(Func)
2554 Made TestFixtureData.SetName internal for 3.9
2271 When CollectionAssert.AreEqual do compare each element, it will ignore the IEquatable of the element too
2102 NUnitLite incorrectly reports Win 10 OS name
2534 SetUpFixture causes NUnit to lock with Apartment( STA )
2411 And constraint on Has.Member throws
2425 XML doc typo fix
2372 Create testing for compounded ConstraintFilters
2478 Attributes on SetUpFixture are not applied
2402 --labels=All doesn't show anything in console output executing NUnitLite Console Runner
1239 NUnit3 sometimes hangs if SetUpFixtures are run in parallel
2388 Parallelization causes test cases to stop respecting fixture's apartment state
1473 Allow Is.Ordered to Compare Null Values
2319 Add .editorconfig to set file encodings so that people don't have to think about it
2508 Correct divergence from shadowed Is / Has members.
2451 Compile RegEx to improve performance
2533 Matches(Predicate) throws ArgumentException or Fails when actual is null
2504 Support changing test display name on TestFixtureData
2448 Inherited Test SetUp, TearDown, etc. are not executed in .NET Core if they are not public
2406 Summary descriptions replaced by more detailed ones
2516 When test writes something to the stdErr there is no guaranteed way to link a test-output event to a target test using ITestEventListener
2459 [Parallelizable(ParallelScope.Children)] Unable to finish tests
2467 Test execution hangs when using [SetUpFixture] with NUnit 3.8.x
1899 Constraint Throws.Exception does not catch exception with async lambdas
2497 Use ConstraintUtils.RequireActual through out the codebase
2475 Framework incorrectly identifies Win 10 in xml results
2441 Allows to override load-time/execution-time interfaces in built-in tests attributes
2422 Has.Property causes AmbiguousMatchException for shadowing properties
1346 NullReferenceException when [TestFixtureSource] refers to data in a generic class.
2429 Stack trace shown for Assert.Warn
2525 Remove unwanted space from comment
2526 SerializationException in low trust floating point equality test
2469 Allow RangeAttribute to be specified multiple times for the same argument
2364 Parallelizable attribute not invalidating invalid parallel scope combinations
2428 Fix NullReferenceExceptions caused by WorkItemQueue not being thread-safe
2311 Resolve test projects' namespace situation
2486 Message when asserting null with Is.EquivalentTo could be more helpful
2418 Support equality comparison delegate
2438 [Parallelizable] hangs after a few tests
2454 SetUpFixture not respecting NonParallelizable tag on TestFixtures.
2465 Possible wrong properties are returned by reflection in ReflectionExtensions.cs
2446 CI failure in mono Warning tests
2471 Parametrized testcases not running in parallel
893 Inconsistent Tuple behavior.
2395 NUnit 3.8+ does not finish running tests
2091 When a native exception of corrupted state is thrown, nunit test thread crashes and the nunit-console process hangs

NUnit 2.9.4 - May 4, 2010

523335 TestFixtureTearDown in static class not executed
483845 TestCase expected return value cannot be null
459219 Changes to thread princpal cause failures under .NET 4.0
488002 Should not report tests in abstract class as invalid
490679 Category in TestCaseData clashes with Category on ParameterizedMethodSuite
505899 'Description' parameter in both TestAttribute and TestCaseAttribute is not allowed
504018 Automatic Values For Theory Test Parameters Not Provided For bool And enum
459224 Culture test failure under .NET 4.0
563532 DatapointsAttribute should be allowed on properties and methods
462418 Assume.That() fails if I specify a message
501352 VS2010 projects have not been updated for new directory structure
419411 Fixture With No Tests Shows as Non-Runnable
561436 SetCulture broken with 2.5.4
462019 Line endings needs to be better controlled in source
556971 Datapoint(s)Attribute should work on `IEnumerable` as well as on Arrays

NUnit 3.2 - March 5, 2016

Engine extensions can be installed via NuGet packages
Added an Order attribute that defines the order in which tests are run
Added Is.Zero and Is.Not.Zero to the fluent syntax as a shorter option for Is.EqualTo(0) and Is.Not.EqualTo(0)
Added Assert.ThrowsAsync for testing if async methods throw an exception
You can now compare unlike collections using Is.EquivalentTo().Using(...)
TestCaseSourceAttribute now optionally takes an array of parameters that can be passed to the source method
Added the ability to add custom message formatters to MsgUtils
1109 NullReferenceException when using inherited property for ValueSource
1210 Available runtimes issues
1278 Fix optional parameters in TestCaseAttribute
1113 Console runner and xml output consistency
1246 Introduce Is.Zero syntax to test for zero
793 Replace CoreEngine by use of Extensions
532 Batch runner for Silverlight tests
1187 ITestAssemblyRunner.StopRun as implemented by NUnitTestAssemblyRunner
1261 TypeHelper.GetDisplayName generates the wrong name for generic types with nested classes
1283 Engine should expose available frameworks.
1171 A bug when using Assert.That() with Is.Not.Empty
1136 Don't allow V2 framework to update in V2 driver tests
170 Test Order Attribute
1185 Engine finds .NET 4.0 Client Profile twice
907 Console report tests are too fragile
1044 Re-order Test Summary Errors/Failures
1286 value of the time attribute in nunit2 outputs depends on the machine culture
1234 Have default NUnitLite Runner Program.cs return exit code
1004 Poor formatting of results for Assert.AreEqual(DateTimeOffset, DateTimeOffset)
1122 Region may be disposed before test delegate is executed
300 Create an NUnit Visual Studio Template
1230 Add ability for testcasedatasource to have parameters passed to methods
1196 Custom value formatter for v3 via MsgUtils
1103 Can't use TestCaseData from base class
1301 Assert.AreNotSame evaluates ToString unnecessarily
1022 Support Comparing Unlike Collections using Is.EquivalentTo().Using(...)
1236 Make Appveyor NuGet feed more useable
1018 ArgumentException when 2.x version of NUnit Framework is in the bin directory
1195 name attribute in test-suite and test-results element of output xml is different to nunit 2.6.4 using nunit2-format
930 Switch from MSBuild based build system to Cake
1066 ApartmentAttribute and TestCaseAttribute(s) do not work together
1252 Exception thrown when any assembly is not found
1120 NUnitProject should parse .nunit project files containing Xml Declarations
981 Define NUnit Versioning for post-3.0 Development
1233 Add TestAssemblyRunner tests to both portable and silverlight builds
1282 TestCase using Params Behaves Oddly
1117 Fix misbehaviour of Throws.Exception with non-void returning functions
464 Async delegate assertions
1121 Usage of field set to null as value source leads to somewhat cryptic error
1133 Provide a way to install extensions as nuget packages
1297 NUnit.Engine nuget package improvements
533 Separate NUnitLite runner and autorunner
681 NUnit agent cannot resolve test dependency assemblies when mixed mode initialization runs in the default AppDomain
922 Wrap Console in NUnitLite

NUnit 3.0.0 Release Candidate - November 1, 2015

NUnitLite

The NUnitLite runner now produces the same output display and XML results as the console runner.
929 Rename nunit-console.exe
918 Console runner --where parameter is case sensitive
783 Package separately for Silverlight
914 Unclear error message from console runner when assembly has no tests
967 Run Settings Report is not being displayed.
955 NUnitLite does not display the where clause
947 Breaking API change in ValueSourceAttribute
939 Installer complains about .NET even if already installed
868 Review skipped tests
59 Length of generated test names should be limited
936 Explicit skipped tests not displayed
887 Move environment and settings elements to the assembly suite in the result file
931 Remove beta warnings from NuGet packages
404 Split tests between nunitlite.runner and nunit.framework
920 Remove addins\nunit.engine.api.dll from NuGet package
904 InternalPreserveStackTrace is not supported on all Portable platforms
899 Colors for ColorConsole on grey background are too light
867 Remove Warnings from Ignored tests
954 NUnitLite XML output is not consistent with the engine's
949 Update copyright in NUnit Console
833 Intermittent failure of WorkItemQueueTests.StopQueue_WithWorkers
959 Restore filter options for NUnitLite portable build
859 NUnit-Console output - move Test Run Summary to end
960 Intermittent failure of CategoryFilterTests
68 Customization of test case name generation
940 Confirm or modify list of packages for release
575 Add support for ASP.NET 5 and the new Core CLR
916 Console runner dies when test agent dies
The Silverlight packages are now separate downloads.
The portable build now supports ASP.NET 5 and the new Core CLR.

NOTE: The `nunit3-console` runner cannot run tests that reference the portable build.

You may run such tests using NUnitLite or a platform-specific runner.

`TestCaseAttribute` and `TestCaseData` now allow modifying the test name without replacing it entirely.
The format of the XML result file has been finalized and documented.
The console runner program is now called `nunit3-console`.
Console runner output has been modified so that the summary comes at the end, to reduce the need for scrolling.

NUnit 2.9.5 - July 30, 2010

498656 TestCase should show array values in GUI
532488 constraints from ConstraintExpression/ConstraintBuilder are not reusable
513989 Is.Empty should work for directories
601645 Parametered test should try to convert data type from source to parameter
600627 Assertion message formatted poorly by PropertyConstraint
608875 NUnit Equality Comparer incorrectly defines equality for Dictionary objects
601108 Duplicate test using abstract test fixtures
606548 Deprecate Directory Assert in 2.5 and remove it in 3.0
519912 Thread.CurrentPrincipal Set In TestFixtureSetUp Not Maintained Between Tests
590717 categorie contains dash or trail spaces is not selectable
595683 NUnit console runner fails to load assemblies
483836 Allow non-public test fixtures consistently
487878 Tests in generic class without proper TestFixture attribute should be invalid
590970 static TestFixtureSetUp/TestFixtureTearDown methods in base classes are not run
605432 ToString not working properly for some properties

NUnit 3.0.0 Final Release - November 15, 2015

635 Mono 4.0 Support

NUnit 3.10 - March 12, 2018

This release adds a .NET Standard 2.0 version of the framework which re-enables

most of the features that have been missing in our earlier .NET Standard builds

like parallelism, timeouts, directory and path based asserts, etc. It also contains

numerous bug fixes and smaller enhancements. We've improved our XML docs,

fixed performance issues and added more detail to Multiple Asserts.

This release also contains source-indexed PDB files allowing developers to debug

into the NUnit Framework. This allows you to track down errors or see how the

framework works.

In order to support the .NET Standard 2.0 version, the NUnit project switched to

the new CSPROJ format and now requires Visual Studio 2017 to compile. This only

effects people contributing to the project. NUnit still supports building and

compiling your tests in older .NET IDEs and NUnit still supports older versions

of the .NET Framework back to 2.0. For contributors, NUnit can now compile all

supported targets on Windows, Linux and Mac using the Cake command line build.

2688 Assert.Throws swallows console output
2202 Best practices for XML doc comments
2749 Update Travis SDK versions
2518 Bug in CollectionAssert.AreEqual for ValueTuples.
2033 Nameof refactor
2530 Running tests on main thread. Revisiting #2483
2742 FailureSite not correctly set on containing suites when tests are ignored.
2663 Building NUnit .NET 4.5 in VS2017 fails
2555 CI timeout: NUnit.Framework.Assertions.CollectionAssertTest.PerformanceTests
2704 Add Constraint to test whether actual item is contained in expected collection
2639 ValuesAttribute causes ExpectedResult to have no effect
2591 NUnitEqualityComparer.Default should be replaced with new NUnitEqualityComparer()
2542 NUnit does not support parallelism on .NET Core 2.0
2671 Ensure that FailureSite.Child is used where appropriate.
2685 Remove Rebracer file
2656 NuGet package links to outdated license
2647 Add Current Attempt indicator in TestContext for use with RetryAttribute
2670 Invalid assemblies no longer give an error message
2515 Retarget Solution to use the New CSPROJ Format
2662 NullReferenceException after parallel tests have finished executing
2405 Improve PropertyConstraint error output
2577 Warning in TearDown is inconsistent with Assertion failure
2580 Remove unused defines
2654 Address feedback from @oznetmaster
1944 Removing Compact Framework workarounds
2627 Breaking change in CollectionAssert.AllItemsAreUnique with NUnit 3.9
2727 Avoid treating warnings as errors inside the IDE
2564 Add minClientVersion to .nuspec files
2325 Retry attribute doesn't retry the test.
2494 CollectionAssert.AllItemsAreUnique() very slow
1958 System.Reflection.TargetInvocationException after run finished
2695 MultipleAssertException doesn't provide proper details on failures
2734 TestCaseAttribute: ExpectedResult should support same value conversion as normal method arguments
2659 Naming Errors
2331 Repo does not build in VS without running `build -t build` first
2669 Removed vestigial build script helper method
2725 Enable 'strict' compilation flag
2622 Fix flakey test
2726 Replace the ConcurrentQueue and SpinWait compatibility classes
2626 SetUp/TearDown methods are invoked multiple times before/after test in .NET Standard targeted projects
2698 Syntax suggestions errors as warnings
2421 Publishing symbols with releases
1678 Result Message: OneTimeSetUp: Category name must not contain ',', '!', '+' or '-'
2608 Culture differences on .NET Core on non-Windows causes test failures
1382 Use array argument contents in name of parameterized tests rather than just array type.
2630 Framework throws NullReferenceException if test parameter is marked with [Values(null)]
2628 Error during installing tools when running build script
2566 Refactor `SimpleEnumerableWithIEquatable` test object
2714 AnyOfConstraint enumerates multiple times
1578 TestContext.CurrentTest exposes too much internal info
2632 Parallel tests are loading 100% CPU when nested SetUpFixture exists
2592 Add .props with ProjectCapability to suppress test project service GUID item
2624 Prevent emails for successful builds on Travis
1373 Setting with a null value
2711 NUnitLite: Add support for --nocolor option

NUnit 3.2.1 - April 19, 2016

Added a .NET 3.5 build of the framework preventing conflicts with the compatiblity classes in the 2.0 framework
Added a SingleThreadedAttribute to be added to a TestFixture to indicate all child tests should run on the same thread
The output and error files are now thread safe when running tests in parallel
Unless required, run all tests within a fixture on the same thread
Added an EventListener extension point
Reduced memory usage
640 Keep CF Build (and other future builds) in Sync
1410 Make OutFile and ErrFile streamwriters synchronized
1141 Explicit Tests get run when using --where with some filters
1390 --testlist with file with blank first line causes IndexOutOfRangeException
1317 Getting CF framework unit tests running on CI build
1338 BUILDING.txt is outdated
1208 Apartment on assembly level broken
1302 Create EventListener ExtensionPoint for the Engine
1406 TextCapture is not threadsafe but is used to intercept calls that are expected to be threadsafe
1327 TestCaseSource in NUnit 3 converts an argument declared as String[] to String
1383 Skip Silverlight build if SDK not installed
332 Add CF to the Appveyor CI build
1405 ITestRunner.StopRun throws exception of type 'System.MissingMethodException'
773 Upgrade Travis CI from Legacy Infrastructure
1386 Bug when using Assert.Equals() with types that explicitly implement `IEquatable`
1247 Potential memory issue
1352 Tests losing data setup on thread
1231 Build may silently fail some tests
1266 SetCultureAttribute does not work if set on assembly level
1399 Fixed NullReference issue introduced by the fix for #681
1349 Collision on System.Func from nunit.framework with System.Core in .Net 3.5 (CS0433)
1329 Unable to build without Compact Framework
1359 Compilation error in NUnitPortableDriverTests.cs
1333 Single Thread per Worker
1413 Switch console to use a local engine
1161 NUnit3-Console should disallow the combination of --inprocess and --x86, giving an error message
1318 NUnit console runner fails with error code -100
No longer probes for newer versions of the engine, instead uses the engine that is included with the console

NUnit 3.0.0 Alpha 3 - November 29, 2014

The -x86 command-line option is provided to force execution in a 32-bit process on a 64-bit system.
The -teamcity option is now supported.
A writeability check is performed for each output result file before trying to run the tests.
The console runner now runs tests in a separate process per assembly by default. They may still be run in process or in a single separate process by use of command-line options.
The console runner now starts in the highest version of the .NET runtime available, making it simpler to debug tests by specifying that they should run in-process on the command-line.
NUnitLite tests must reference both the nunit.framework and nunitlite assemblies.
The logic of runtime selection has now changed so that each assembly runs by default in a separate process using the runtime for which it was built.
On 64-bit systems, each test process is automatically created as 32-bit or 64-bit, depending on the platform specified for the test assembly.
341 Move the NUnitLite runners to separate assemblies
325 Add RegexConstraint to compact framework build
306 Assure NUnit can write resultfile
238 Improvements to running 32 bit tests on a 64 bit system
326 Add TimeoutAttribute to compact framework build
328 Use .NET Stopwatch class for compact framework builds
386 Console Output Improvements
372 CF Build TestAssemblyRunnerTests
308 Early disposal of runners
333 Add parallel execution to desktop builds of NUnitLite
261 Add portable nunitlite build
334 Include File-related constraints and syntax in NUnitLite builds
367 Refactor XML Escaping Tests
293 CF does not have a CurrentDirectory
145 NUnit-console fails if test result message contains invalid xml characters
378 Correct documentation for PairwiseAttribute
225 Compact Framework Support
327 Allow generic test methods in the compact framework
155 Create utility classes for platform-specific code
12 Compact framework should support generic methods
309 NUnit-Console should support incremental output under TeamCity
284 NUnitLite Unification
337 Update Standard Defines page for .NET 3.0
335 Re-introduce 'Classic' NUnit syntax in NUnitLite
336 Document use of separate obj directories per build in our projects
373 Minor CF Test Fixes
223 Common code for NUnitLite console runner and NUnit-Console
331 Alpha 2 CF does not build
The NUnit and NUnitLite frameworks have now been merged. There is no longer any distinction between them in terms of features, although some features are not available on all platforms.
A number of previously unsupported features are available for the Compact Framework:
FileAssert, DirectoryAssert and file-related constraints
Generic methods as tests
RegexConstraint
TimeoutAttribute
The release includes two new framework builds: compact framework 3.5 and portable. The portable library is compatible with .NET 4.5, Silverlight 5.0, Windows 8, Windows Phone 8.1, Windows Phone Silverlight 8, Mono for Android and MonoTouch.

NUnit 3.6 - January 9, 2017

This release of the framework no longer includes builds for Compact Framework or

for SilverLight, but adds a .NET Standard 1.6 build. If anyone still using

Compact Framework or SilverLight and would like to continue development on those

versions of the framework, please contact the NUnit team.

1601 Move Silverlight to a separate project
1837 [Request] AfterContraint to support more readable usage
1765 TestCaseSourceAttribute constructor for method with parameters
1829 NUnitLite accepts --params option but does not make any use of it.
1808 Disambiguate error messages from EqualConstraint
1661 Create .NET Standard Framework Build
1380 Appveyor Failures when branch name is too long
1913 Report Warnings in NUnitLite
1911 Changing misleading comment that implies that every `ICollection` is a list
1891 TestContext.Progress and TestContext.Error silently drop text that is not properly XML encoded
1915 Enable Path, File and Directory Assert/Constraints in the .NET Standard Build
1758 No direct inverse for Contains.Key
1836 Support nullable enums in Theories
1880 AttributeUsage for various Attributes
1901 Make nunitlite-runner Prefer32Bit option consistent across Debug/Release
1827 Remove unused repository paths from repositories.config
1954 Change Error Message for Assert.Equals
890 Allow file references anywhere in the command line.
1840 Remove SL and CF #Defined source
1589 Split the nunit repository into multiple repositories
1889 Modify nunitlite to display multiple assert information
1960 Typo fixes
1929 Rename zip and remove source zip
1811 Build.ps1 fails if spaces in path
1924 Run tests using the NUnit Console Runner
1668 Need implementation-independent way to test number of items in a collection
1599 Move Compact Framework to separate project
1872 Parameterized method being called with no parameter
1904 Add .NET Standard 1.6 Dependencies to the Nuspec Files
1866 [Request] More readable way to set polling interval in After constraint
1966 Xamarin Runner cannot reference NUnit NuGet Package
1609 Upgrade Cake build to latest version
406 Warning-level Assertions
1933 Tests should pass if test case source provides 0 test cases
1947 Add NonTestAssemblyAttribute
1828 Add Retry for failed tests only
1917 Use of IsolatedContext breaks tests in user-created AppDomain
1912 Add new warning status and result state
1802 Design Multiple Assert syntax as seen by users
1876 What should we do about Env.cs
1823 Remove engine nuspecs and old global.json
1914 Extra AssertionResult entries in TestResults
1945 Use high-quality icon for nuspecs
1941 Use dictionary-based property for test run parameters
1907 Handle early termination of multiple assert block
1870 EqualConstraint result failure message for DateTime doesn't show sufficient resolution
1743 Provide multiple results for a test case in the XML output
Added warnings with Warn.If(), Warn.Unless() and Assert.Warn()
Theories now support Nullable enums
Adds support for Multiple Assert blocks
.NET Standard 1.6 is now supported
Improved assert error messages to help differentiate differences in values
Added the --params option to NUnitLite
Enabled Path, File and Directory Asserts/Contraints for .NET Core testing
Added NonTestAssemblyAttribute for use by third-party developers to indicate that their assemblies reference the NUnit framework, but do not contain tests

NUnit 3.0.0 Release Candidate 2 - November 8, 2015

The IDriverFactory extensibility interface has been modified.
986 Update docs for parallel execution
990 V2 driver is passing invalid filter elements to NUnit
991 Mono.Options should not be exposed to public directly
997 Add missing XML Documentation
978 It should be possible to determine version of NUnit using nunit console tool
983 Inconsistent return codes depending on ProcessModel
988 Don't run portable tests from NUnit Console
1008 NUnitLite namespace not updated in the NuGet Packages
993 Give error message when a regex filter is used with NUnit V2
970 Define PARALLEL in CF build of nunitlite

NUnit 3.0.1 - December 1, 2015

The Nunit.Runners NuGet package was updated to become a meta-package that pulls in the NUnit.Console package
Reinstated the --pause command line option that will display a message box allowing you to attach a debugger if the --debug option does not work
1024 Added --pause flag to console runner
1050 Do not expose System.Runtime.CompilerServices.ExtensionAttribute to public
1035 Check null arguments
1055 nunit3 console runner --where option does not return error on invalid selection string
1033 "No arguments were provided" with Theory and Values combination
1060 Remove "Version 3" from NUnit Nuget Package
1061 Nunit30Settings.xml becomes corrupted
1037 Async tests not working on Windows 10 Universal
1063 Error in Random Test
1054 Create nuget feeds for CI builds on Appveyor
1041 NUnit2XmlResult Writer is reporting Sucess when test fails
1014 Ensure NUnit API assembly updates with MSI installs
1046 FloatingPointNumerics.AreAlmostEqualUlps throws OverflowException
1062 Console.WriteLine statements in "OneTimeSetUp" and "OneTimeTearDown" annotated methods are not directed to the console when using nunit3-console.exe runner
1049 Cannot select Generic tests from command line
1030 Update Nunit.Runners package to 3.0
1042 NUnit2 reports on 3.0 is different than 2.6.4
994 Add max number of Agents to the NUnit project file

NUnit 3.0.0 Alpha 5 - January 30, 2015

257 TestCaseAttribute should not require parameters with default values to be specified.
456 Fix memory leak in RuntimeFramework.
442 Add --stoponerror option back to nunit-console.
60 NUnit should support async setup, teardown, fixture setup and fixture teardown.
266 Pluggable framework drivers.
459 Remove the Mixed Platforms build configuration.
437 Errors in tests under Linux due to hard-coded paths.
441 NUnit-Console should support --testlist option
369 Project loader addins
469 Truncate string arguments in test names in order to limit the length.
468 Change default domain usage to multiple.
370 OutputWriter addins
368 Create addin model.
20 TestCaseAttribute needs Platform property.
427 [TestFixture(Ignore=true)] should not be allowed.
419 Create Windows Installer for NUnit.
403 Move ConsoleOptions.cs and Options.cs to Common and share...
stoponerror indicates that the run should terminate when any test fails.
New options supported:
testlist provides a list of tests to run in a file
A Windows installer is now included in the release packages.
TestFixture and TestCase attributes now enforce the requirement that a reason needs to be provided when ignoring a test.
SetUp, TearDown, OneTimeSetUp and OneTimeTearDown methods may now be async.
TestCaseAttribute now allows arguments with default values to be omitted. Additionaly, it accepts a Platform property to specify the platforms on which the test case should be run.
String arguments over 20 characters in length are truncated when used as part of a test name.
ProjectLoaders for NUnit and Visual Studio projects.
The engine is now extensible using Mono.Addins. In this release, extension points are provided for FrameworkDrivers, ProjectLoaders and OutputWriters. The following addins are bundled as a part of NUnit:
A FrameworkDriver that allows running NUnit V2 tests under NUnit 3.0.
DomainUsage now defaults to Multiple if not specified by the runner
An OutputWriter that creates XML output in NUnit V2 format.

NUnit 3.6.1 - February 26, 2017

This is a hotfix release of the framework that addresses critical issues found in

the 3.6 release.

2043 Regression in 3.6.0 when catching AssertionException
1962 A Theory with no data passes
1986 NUnitLite ignores --workers option
1994 NUnitLite runner crashing when --trace is specified
2017 Two NUnit project's tests fail on systems with comma decimal mark settings

NUnit 2.9.7 - August 8, 2014

NUnit no longer supports void async test methods. You should use a Task return Type instead.
The ExpectedExceptionAttribute is no longer supported. Use Assert.Throws() or Assert.That(..., Throws) instead for a more precise specification of where the exception is expected to be thrown.
65 Update NUnit Wiki to show the new location of samples
21 Is.InRange Constraint Ambiguity
161 Update API to support stopping an ongoing test run

NOTE: Bug Fixes below this point refer to the number of the bug in Launchpad.

36 Make RequiresThread, RequiresSTA, RequiresMTA inheritable
75 Async tests should be supported for projects that target .NET 4.0
118 Workarounds for missing InternalPreserveStackTrace in mono
62 Matches(Constraint) does not work as expected
64 AsyncStateMachineAttribute should only be checked by name
129 Standardize Timeout in the Silverlight build
29 Specifying a tolerance with "Within" doesn't work for DateTimeOffset data types
14 CI Server for NUnit Framework
110 Add new platforms to PlatformAttribute
100 Changes to Tolerance definitions
55 Incorrect XML comments for CollectionAssert.IsSubsetOf
121 Test harness does not honor the --worker option when set to zero
83 Path-related tests fail on Linux
67 Allow Expected Result on simple tests
27 Values attribute support for enum types
132 Drop support for void async methods
8 [SetUpFixture] is not working as expected
31 Report start and end time of test execution
130 Add FileAssert.Exists and FileAssert.DoesNotExist
90 EquivalentTo isn't compatible with IgnoreCase for char
66 Parallel Test Execution within test assemblies
88 TestCaseSourceAttribute documentation
85 Culture-dependent NUnit tests fail on non-English machine
153 Surprising behavior of DelayedConstraint pollingInterval
113 Remove ExpectedException
82 nunit-framework tests are timing out on Linux
63 Async support should handle Task return type without state machine
70 EquivalentTo isn't compatible with IgnoreCase for dictioneries
45 Need of Enddate together with Ignore
A new FileExistsConstraint has been added along with FileAssert.Exists and FileAssert.DoesNotExist
Async tests are supported for .NET 4.0 if the user has installed support for them.
ExpectedResult is now supported on simple (non-TestCase) tests.
The XML output now includes a start and end time for each test.
You may now specify a tolerance using Within when testing equality of DateTimeOffset values.
TimeoutAttribute is now supported under Silverlight
Parallel test execution is supported down to the Fixture level. Use ParallelizableAttribute to indicate types that may be run in parallel.
ValuesAttribute may be used without any values on an enum or boolean argument. All possible values are used.
The following new values are now recognized by PlatformAttribute: Win7, Win8, Win8.1, Win2012Server, Win2012ServerR2, NT6.1, NT6.2, 32-bit, 64-bit
The Ignore attribute now takes a named parameter Until, which allows specifying a date after which the test is no longer ignored.

NUnit 3.11 - October 6, 2018

PlatformAttribute is available on .NET Standard and now detects .NET Core

Support for UWP 10.0 is back via .NET Standard 1.4

Async tests detecting and running Windows Forms or WPF message pumps rather than deadlocking

ValuesAttribute now works with nullable types

More informative assertion messages

2823 SetUp failed for test fixture - Array was not a one-dimensional array. Issue seems related to byte[,] method parameters
2427 PropertyConstraint throws away the more helpful message in the base constraint result
2432 Ability to exclude/include the platform .NET Core
2965 NuGet Package : Add `repository` metadata.
2831 Regular "BusyExecIdle after 200 milliseconds delay" CI failures
2123 Task.Run inside a test will result in deadlock if a control was created previously
2867 Skip executing TestCaseSources for tests which are not included in the filter
1200 async test + Apartment(ApartmentState.STA) => await not returning on STA thread
2798 [Request] Show actual count value when test fail on Has.Exactly(x).Items
2842 Supporting inheritance of Assert and related classes
3009 Fix failing CI Builds by upgrading to NUnit Console 3.9.0
2887 NETStandard 1.3 support dropped in NUnit 3.10
2814 Remove public marker types
2829 Obsoletion warning for DataAttribute
2885 Copy/paste error in Assert.That documentation
2996 Remove unused enum
2854 Has.All.../Has.None... - show non-matching items in error message
2923 Update outdated CategoryAttribute xmldoc
2970 InvalidCastException @ NUnit.Framework.TestFixtureSourceAttribute.BuildFrom
352 Test with infinite loop in TearDown cannot be aborted
3032 APIs to restore before 3.11
2781 Fixed precompiler typo
3020 Upgrade nunit-vs-adapter to 3.10 for nUnit 3.11
2790 Removing ITypeInfo abstraction
2901 Values attribute support for nullable bool and enum types
2833 Use longer BusyExecIdle to avoid CI failures
2786 Timeout value not resetting on Retry of failed test
2759 Test fails with "No arguments were provided" error when no values returned from IParameterDataSource
2876 Implement Discovery-time filtering for NUnitLite
2955 Potential threading issue in IsolatedContext
2757 Broken `char` comparison in v3.7 and higher
2979 Warn.If in Assert.Multiple
2146 Assert.That with a Throws constraint does not provide as much info as Assert.Throws
2693 Ensure that resharper settings are consistent with the editorconfig configuration
2761 Infinite loop in nunit 3.9
2611 Enable .NET Standard 1.6 tests on non-Windows
2837 DictionaryContainsKeyConstraint behaviour is inconstant with Dictionary.ContainsKey when the dictionary uses a custom Comparer
2898 AssemblyPath contains invalid charaters
2450 NullReferenceException in ExceptionHelper.BuildMessage on Mono
2883 Our public ConcurrentQueue causes type conflicts
2994 Error in .NET Standard 1.4 DictionaryContainsKeyConstraint MetadataToken compatibility methods
2940 Increase StackTracesAreFiltered amount to 5
2929 Added NUnit XML schemas
660 Order dependence of And and Or constraints should be documented
2836 NUnit.Framework.Does cannot be extended
2821 Save and restore the SynchronizationContext before and after each test case
2928 Improve error message on EmptyConstraint
2896 Some tests are silently skipped on netstandard1.x since #2796
2536 SetArgDisplayNames for TestCaseData and TestFixtureData
452 Deprecate the existing Chocolatey framework package
2863 Make tests robust without depending on the order of attributes
2819 Only run AppVeyor PR build against open PRs
3024 Unable to add `.IgnoreCase` modifier to an `AnyOf` constraint in collection constraints

NUnit 3.0.0 Beta 2 - May 12, 2015

Added a core engine which is a non-extensible, minimal engine for use by devices and similar situations where reduced functionality is compensated for by reduced size and simplicity of usage. See https://github.com/nunit/dev/wiki/Core-Engine for more information.
538 Potential bug using TestContext in constructors
568 Isolate packaging from building
584 Non-runnable assembly has incorrect ResultState
579 No documentation for recommended usage of TestCaseSourceAttribute
577 Documentation on some members of Throws falsely claims that they return `TargetInvocationException` constraints
360 Better exception message when using non-BCL class in property
612 MaxTime doesn't work when used for TestCase
628 Modify IService interface and simplify ServiceContext
217 New icon for the 3.0 release
611 Remove unused --teamcity option from CF build of NUnitLite
559 Fix text of NuGet packages
609 Add support for integration with TeamCity
454 Rare registry configurations may cause NUnit to fail
168 Create NUnit 3.0 documentation
478 RepeatAttribute
631 Separate packaging for the compact framework
648 Passing 2 or more test assemblies targeting > .NET 2.0 to nunit-console fails
582 Test Ids Are Not Unique
646 ConfigurationManager.AppSettings Params Return Null under Beta 1
621 Core Engine
196 Compare DateTimeOffsets including the offset in the comparison
481 Testing multiple assemblies in nunitlite
560 Fix PackageVersion property on wix install projects
565 NUnitLite Nuget package adds Program.cs to a VB Project
22 Add OSArchitecture Attribute to Environment node in result xml
316 NUnitLite TextUI Runner
48 Explicit seems to conflict with Ignore
551 TextRunner not passing the NumWorkers option to the ITestAssemblyRunner
320 No Tests found: Using parametrized Fixture and TestCaseSource
622 nunit-console fails when use --output
564 NUnitLite Nuget package is Beta 1a, Framework is Beta 1
546 Enable Parallel in NUnitLite/CF (or more) builds
556 Executed tests should always return a non-zero duration
583 TeamCity service messages to support parallel test execution
576 Throws.ArgumentNullException would be nice
562 Program.cs in NUnitLite NuGet package is incorrect
570 ThrowsConstraint failure message should include stack trace of actual exception
580 TeamCity Service Message Uses Incorrect Test Name with NUnit2Driver
24 Assert on Dictionary Content
Added Throws.ArgumentNullException
When checking the equality of DateTimeOffset, you can now use the WithSameOffset modifier
The NUnit 2.x RepeatAttribute was added back into the framework.
The Compact Framework version of the framework is now packaged separately and will be distributed as a ZIP file and as a NuGet package.
Some classes intended for internal usage that were public for testing have now been made internal. Additional classes will be made internal for the final 3.0 release.
Added GetString methods to NUnit.Framework.Internal.RandomGenerator to create repeatable random strings for testing

NUnit 3.0.0 Alpha 2 - November 2, 2014

General

We now have continuous integration builds under both Travis and Appveyor
A separate solution has been created for Linux
The compact framework 3.5 build is now working and will be supported in future releases.

New Features

The NUnitLite command-line has been standardized to match that of nunit-console where they share the same options.
OneTimeSetUp and OneTimeTearDown failures are now shown on the test report. Individual test failures after OneTimeSetUp failure are no longer shown.
ActionAttributes now allow specification of multiple targets on the attribute as designed. This didn't work in the first alpha.
Both nunit-console and NUnitLite now display output in color.
The NUnitLite report output has been standardized to match that of nunit-console.
The console runner now automatically detects 32- versus 64-bit test assemblies.
The console runner refuses to run tests build with older versions of NUnit. A plugin will be available to run older tests in the future.
256 ContainsConstraint break when used with AndConstraint
276 NUnit-console should not reference nunit.framework
222 Color console for NUnitLite
274 Command line options should be case insensitive
245 Multiple targets on action attributes not implemented
269 Add manifest to nunit-console and nunit-agent
243 Create solution for Linux
319 CI builds are not treating test failures as failures of the build
270 OneTimeSetUp failure results in too much output
288 Set up Appveyor CI build
247 Eliminate trace display when running tests in debug
290 Stack trace still displays too many items
278 New result states (ChildFailure and SetupFailure) break NUnit2XmlOutputWriter
241 Remove reference to Microslft BCL packages
229 Timing failures in tests
315 NUnit 3.0 alpha: Cannot run in console on my assembly
255 Add new result states for more precision in where failures occur
322 Remove Stopwatch tests where they test the real .NET Stopwatch
282 Get tests for NUnit2XmlOutputWriter working
271 Invalid tests should be treated as errors
246 C++ tests do not compile in VS2013
264 Stacktrace displays too many entries

Breaking Changes

The console runner no longer displays test results in the debugger.
The NUnitLite compact framework 2.0 build has been removed.
All addin support has been removed from the framework. Documentation of NUnit 3.0 extensibility features will be published in time for the beta release. In the interim, please ask for support on the nunit-discuss list.

NUnit 2.9.2 - September 19, 2009

Added NUnitLite runner to the framework code
Added Compact framework builds
NUnitLite code is now merged with NUnit
432573 Mono test should be at runtime
432566 NUnitLite shows empty string as argument
430100 `Assert.Catch` should return T

NUnit 3.0.0 Beta 4 - August 25, 2015

A new RetryAttribute allows retrying of failing tests.
Tests skipped due to ExplicitAttribute are now reported as skipped.
New SupersetConstraint and Is.SupersetOf syntax complement SubsetConstraint.
649 Change how we zip packages
749 Review Use of Mono.Addins for Engine Extensibility
760 Packaging targets do not run on Linux
664 Invalid "id" attribute in the report for case "test started"
642 Restructure MSBuild script
780 Teamcity fix
654 ReflectionOnlyLoad and ReflectionOnlyLoadFrom
685 In the some cases when tests cannot be started NUnit returns exit code "0"
125 3rd-party dependencies should be downloaded on demand
750 Include Explicit Tests in Test Results
746 Framework should send events for all tests
741 Explicit Tests get run when using --exclude
283 What should we do when a user extension does something bad?
778 Build and build.cmd scripts invoke nuget.exe improperly
766 Added overloads for True()/False() accepting booleans
757 Implement some way to wait for execution to complete in ITestEngineRunner
782 No sources for 2.6.4
585 RetryAttribute
728 Missing Assert.That overload
755 TimeOut attribute doesn't work with TestCaseSource Attribute
753 Feature request: Is.SupersetOf() assertion constraint
747 NUnit should apply attributes even if test is non-runnable
We now use Cecil to examine assemblies prior to loading them.
Extensions are no longer based on Mono.Addins but use our own extension framework.

NUnit 3.0.0 Beta 3 - July 15, 2015

If the console is run without arguments, it will now display help
Added async support to the portable version of NUnit Framework
TestContext.Random has also been extended to add support for new data types including uint, long, ulong, short, ushort, float, byte, sbyte and decimal
Added platform support for Windows 10 and fixed issues with Windows 8 and 8.1 support
Removed the dependency on Microsoft.Bcl.Async from the NUnit Framework assembly targeting .NET 4.0. If you want to write async tests in .NET 4.0, you will need to reference the NuGet package yourself.
The RangeAttribute has been extended to support more data types including uint, long and ulong
The named members of the TestCaseSource and ValueSource attributes must now be static.
Significant improvements have been made in how NUnit deduces the type arguments of generic methods based on the arguments provided.
RandomAttribute has been extended to add support for new data types including uint, long, ulong, short, ushort, float, byte and sbyte
Added a new TestFixtureSource attribute which is the equivalent to TestCaseSource but provides for instantiation of fixtures.
If the target framework is not specified, test assemblies that are compiled to target .NET 4.5 will no longer run in .NET 4.0 compatibility mode
687 TestAgency does not launch agent process correctly if runtime type is not specified (i.e. v4.0)
692 PlatformAttribute_OperatingSystemBitNess fails when running in 32-bit process
718 RangeConstraint gives error with from and two args of differing types
715 Provide a data source attribute at TestFixture Level
539 Truncation of string arguments
698 Require TestCaseSource and ValueSource named members to be static
712 Extensions to RandomAttribute
703 TeamCity non-equal flowid for 'testStarted' and 'testFinished' messages
244 NUnit should properly distinguish between .NET 4.0 and 4.5
673 Ensure proper disposal of engine objects
321 Rationalize how we count tests
237 System.Uri .ctor works not properly under Nunit
723 Does nunit.nuspec require dependency on Microsoft.Bcl.Async?
724 Adds support for `Nullable` to Assert.IsTrue and Assert.IsFalse
674 Engine does not release test assemblies
47 Extensions to RangeAttribute
524 int and char do not compare correctly?
544 AsyncTestMethodTests for 4.5 Framework fails frequently on Travis CI
656 Unused parameter in Console.WriteLine found
682 Add Async Support to Portable Framework
472 Overflow exception and DivideByZero exception from the RangeAttribute
670 Failing Tests in TeamCity Build
679 Windows 10 Support
310 Target framework not specified on the AppDomain when running against .Net 4.5
683 Make FrameworkController available in portable build
734 Console without parameters doesn't show help
693 Generic `Test` Method cannot determine type arguments for fixture when passed as `IEnumerable`

NUnit 2.9.6 - October 4, 2013

Bug Fixes

898256 `IEnumerable` for Datapoints doesn't work
735851 Add detection of 3.0, 3.5 and 4.0 frameworks to PlatformAttribute
708173 NUnit's logic for comparing arrays - use `Comparer` if it is provided
1037144 Add MonoTouch support to PlatformAttribute
882137 When no tests are run, higher level suites display as Inconclusive
1041365 Add MaxOsX and Xbox support to platform attribute
920472 CollectionAssert.IsNotEmpty must dispose Enumerator
882517 NUnit 2.5.10 doesn't recognize TestFixture if there are only TestCaseSource inside
691129 Add Category parameter to TestFixture
1111838 Include Random Seed in Test Report
904841 After exiting for timeout the teardown method is not executed
719184 Platformdependency in src/ClientUtilities/util/Services/DomainManager.cs:40
712156 Tests cannot use AppDomain.SetPrincipalPolicy
794115 HashSet incorrectly reported
848713 Feature request: Add switch for console to break on any test case error
910218 NUnit should add a trailing separator to the ApplicationBase
800089 Assert.Throws() hides details of inner AssertionException
664081 Add Server2008 R2 and Windows 7 to PlatformAttribute
498690 Assert.That() doesn't like properties with scoped setters
1111834 Expose Random Object as part of the test context
531873 Feature: Extraction of unit tests from NUnit test assembly and calling appropriate one
1071861 Error in Path Constraints
1071343 Runner.Load fails on CF if the test assembly contains a generic method
655882 Make CategoryAttribute inherited
1072379 Report test execution time at a higher resolution
908829 TestCase attribute does not play well with variadic test functions
922455 Add Support for Windows 8 and Windows 2012 Server to PlatformAttribute
1028188 Add Support for Silverlight
1203361 Randomizer uniqueness tests sometimes fail
1064014 Simple async tests should not return `Task`
1225542 Standardize commandline options for test harness
611325 Allow Teardown to detect if last test failed
1029785 Test loaded from remote folder failed to run with exception System.IODirectory
885173 Tests are still executed after cancellation by user
787106 EqualConstraint provides inadequate failure information for IEnumerables
898192 Feature Request: Is.Negative, Is.Positive
896973 Console output lines are run together under Linux
709062 "System.ArgumentException : Cannot compare" when the element is a list
501784 Theory tests do not work correctly when using null parameters
756843 Failing assertion does not show non-linear tolerance mode
676560 Assert.AreEqual does not support `IEquatable`
1082330 Better Exception if SetCulture attribute is applied multiple times
792466 TestContext MethodName
878376 Add 'Exactly(n)' to the NUnit constraint syntax
892844 Not using Mono 4.0 profile under Windows
785460 Add Category parameter to TestCaseSourceAttribute
719187 Using Path.GetTempPath() causes conflicts in shared temporary folders
1023084 Add Enum support to RandomAttribute
611938 Generic Test Instances disappear
697069 Feature request: dynamic location for TestResult.xml
1000213 Inconclusive message Not in report output
671432 Upgrade NAnt to Latest Release
1000181 Parameterized TestFixture with System.Type as constructor arguments fails
770471 Assert.IsEmpty does not support IEnumerable
1221712 When non-existing test method is specified in -test, result is still "Tests run: 1, Passed: 1"
885277 Exception when project calls for a runtime using only 2 digits
890129 DelayedConstraint doesn't appear to poll properties of objects
1074568 Assert/Assume should support an async method for the ActualValueDelegate
1071164 Support async methods in usage scenarios of Throws constraints
1060631 Add .NET 4.5 build
1172979 Add Category Support to nunitlite Runner
885604 Feature request: Explicit named parameter to TestCaseAttribute
928246 Use assembly.Location instead of assembly.CodeBase
766749 net-2.0\nunit-console-x86.exe.config should have a `` element and also enable loadFromRemoteSources
1223294 System.NullReferenceException thrown when ExpectedExceptionAttribute is used in a static class
899178 Wrong failure message for parameterized tests that expect exceptions
893919 DelayedConstraint fails polling properties on references which are initially null
1057981 C#5 async tests are not supported
736062 Deadlock when EventListener performs a Trace call + EventPump synchronisation
463470 We should encapsulate references to pre-2.0 collections
958766 For development work under TeamCity, we need to support nunit2 formatted output under direct-runner
897289 Is.Empty constraint has unclear failure message

Bug Fixes in 2.9.6 But Not Listed Here in the Release

1222148 /framework switch does not recognize net-4.5
1228979 Theories with all test cases inconclusive are not reported as failures
541699 Silverlight Support

Main Features

Solutions and projects now use VS2012 (except for Compact framework)
TestContext is now supported
Tests may be run in parallel on separate threads
External API is now stable; internal interfaces are separate from API
New builds for .NET 4.5 and Silverlight
Separate projects for nunit-console and nunit.engine

NUnit 3.8.1 - August 28, 2017

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.

2390 Missing value attribute in test parameters setting causes NullReferenceException in console
2386 Contains.Item() fails for collections in NUnit 3.8

NUnit 3.0.0 Alpha 4 - December 30, 2014

Framework

ApartmentAttribute has been added, replacing STAAttribute and MTAAttribute.
Unnecessary overloads of Assert.That and Assume.That have been removed.
The new NUnitLite runner --testlist option, allows a list of tests to be kept in a file.
Improvements to the Pairwise strategy test case generation algorithm.
Multiple SetUpFixtures may be specified in a single namespace.

Console

The command-line may now include any number of assemblies and/or supported projects.
231 Update C# samples to use NUnit 3.0
363 Make Xml result output an engine service
299 No full path to assembly in XML file under Compact Framework
396 ApartmentAttribute
233 Update F# samples to use NUnit 3.0
417 Complete work on NUnit projects
265 Reorganize console reports for nunit-console and nunitlite
301 Command-line length
397 CF nunitlite runner assembly has the wrong name
407 Assert.Pass() with ]]> in message crashes console runner
420 Create Settings file in proper location
210 TestContext.WriteLine in an AppDomain causes an error
416 NUnit 2.x Framework Driver
388 Improvements to NUnitLite runner output
390 Specify exactly what happens when a test times out
414 Simplify Assert overloads
234 Update C++ samples to use NUnit 3.0
227 Add support for VS projects and solutions
37 Multiple SetUpFixtures should be permitted on same namespace
377 CombiningStrategyAttributes don't work correctly on generic methods

Engine

Visual Studio solutions (.sln)
Visual Studio Visual Basic projects (.vbproj)
Visual Studio F# projects (.vjsproj)
A driver is now included, which allows running NUnit 2.x tests under NUnit 3.0.
Support for the current C++ format (.csxproj) is not yet available
Visual Studio C# projects (.csproj)
Creation of output files like TestResult.xml in various formats is now a service of the engine, available to any runner.
Legacy C++ and Visual JScript projects (.csproj and .vjsproj) are also supported
NUnit (.nunit)
The engine can now load and run tests specified in a number of project formats:

NUnit 3.4.1 - June 30, 2016

Console Runner

A new option, --list-extensions, will display all the engine extensions that have been installed by the engine.
1623 NUnit 3.4 is not integrated with TeamCity
1635 Console option to list loaded extensions
1626 NUnit.ConsoleRunner is not picking up NUnit.Extension.NUnitV2ResultWriter
1628 Agent's process stays in memory when it was failed to unload AppDomain

NUnit 3.12 - May 14, 2019

This release of NUnit finally drops support for .NET 2.0. If your application still

targets .NET 2.0, your tests will need to target at least .NET 3.5. Microsoft ended

support for .NET 2.0 on July 12, 2011. Microsoft recommends that everyone migrate

to at least .NET Framework 3.5 SP1 for security and performance fixes.

This release dramatically improves NUnit support for async tests including returning

ValueTask and custom tasks from tests, improved handling of SynchronizationContexts

and better exception handling.

The .NET Standard 2.0 version of NUnit continues to gain more functionality that

is found in the .NET 4.5 version of the framework like setting the ApartmentState

and enabling Timeout on tests.

Issues Resolved

2168 ThrowsAsync reports OperationCanceledException as TaskCanceledException
3186 Fix licenseUrl element in nuspec, will be deprecated
3082 Is.Ordered.By
3159 Make tests more tolerant
3211 Fix logging
3093 Tests having TaskLike objects as their return type throws Exception
2614 TestExecutionContext.CurrentContext is saved in Remoting CallContext between test runs
3085 XML Test-Suite Assembly does not contain DLL path anymore
3070 End support for .NET Framework 2.0 (released in 2005)
3128 Correct documentation on ParallelScope
2772 Random failing of parallel test run: Unhandled Exception: System.InvalidOperationException: Stack empty.
3218 Remove todos from the code base
3105 Add tests for use of ApartmentState.Unknown in RequiresThreadAttribute
3171 Incorrect type for Test Fixtures when using running explore with a filter
3104 Removed NET20 compile output
2286 Add support for custom Task (i.e. ValueTask)
2194 How to use `Contains.Substring` with `And`
474 TypeHelperTests.cs is orphaned
2579 AppVeyor Test Failures under .NET 3.5
2975 ComparisonConstraints are allocating string on construction
3137 Fix doc-comments in NUnitTestAssemblyRunner
3023 NUnit runner fails when test method returns ValueTask<>
3181 Template Based Test Naming - Incorrect truncation for individual arguments
3195 Drop or at least make Travis not required?
3109 Azure DevOps build fails in Save package artifacts
3231 Breaking change in filter functionality between framework 2.7 and 3.11
3175 Improve user-facing messages
3059 Constraint Throws.Exception does not work with async return value
3014 Timeout failures on MacOS
3053 Conversion from TestCase string parameter to DateTimeOffset
3145 Capture additional exception details in the test output
3166 Allow static SetUpFixture classes
3222 Our build script tests hang when run with Mono on Windows
3193 Cake Build Fails with Visual Studio 2019
3042 RequiresThreadAttribute allows ApartmentState.Unknown, unlike ApartmentAttribute
3107 Declare class in Program.cs provided with NUnitLite Nuget package static
3138 Assert.Ignore breaks when a Task is returned w/o using async/await
3209 Test fail when posting to SynchronizationContext.Current
3094 Bad error message if collections have different types
3038 TestName in TestCase attribute not validated to be not empty
3073 CollectionAssert.AreEquivalent fails for ValueTuple Wrapped Dictionary
3156 UnexpectedExceptionTests should tolerate Mono on Azure DevOps Ubuntu
3036 Apartment state can't be used for .NET Standard 2.0 tests
3233 AndConstraint should write additional information from failed constraint
3144 Retry attribute should not derive from PropertyAttribute
3068 First Chance Exception in RuntimeFramework
3048 Add .idea folder to .gitignore
3035 Apartment state can't be used for .NET Standard 2.0 tests
3161 https url repo
3089 Remove outdated comment
999 Support multiple TestOf attributes per test
3124 Switch copyright notice
3079 Regression from 3.10 to 3.11: Range in bytes
3139 Add Azure pipelines badge to frontpage
1638 TimeoutAttribute not available when targeting netcoreapp framework
2696 Getting WorkerId fails in debug