1### NUnit 3.12 - May 14, 2019
2
3This release of NUnit finally drops support for .NET 2.0. If your application still
4targets .NET 2.0, your tests will need to target at least .NET 3.5. Microsoft ended
5support for .NET 2.0 on July 12, 2011. Microsoft recommends that everyone migrate
6to at least .NET Framework 3.5 SP1 for security and performance fixes.
7
8This release dramatically improves NUnit support for async tests including returning
9ValueTask and custom tasks from tests, improved handling of SynchronizationContexts
10and better exception handling.
11
12The .NET Standard 2.0 version of NUnit continues to gain more functionality that
13is found in the .NET 4.5 version of the framework like setting the ApartmentState
14and enabling Timeout on tests.
15
16#### Issues Resolved
17
18 * 474 TypeHelperTests.cs is orphaned
19 * 999 Support multiple TestOf attributes per test
20 * 1638 TimeoutAttribute not available when targeting netcoreapp framework
21 * 2168 ThrowsAsync reports OperationCanceledException as TaskCanceledException
22 * 2194 How to use `Contains.Substring` with `And`
23 * 2286 Add support for custom Task (i.e. ValueTask)
24 * 2579 AppVeyor Test Failures under .NET 3.5
25 * 2614 TestExecutionContext.CurrentContext is saved in Remoting CallContext between test runs
26 * 2696 Getting WorkerId fails in debug
27 * 2772 Random failing of parallel test run: Unhandled Exception: System.InvalidOperationException: Stack empty.
28 * 2975 ComparisonConstraints are allocating string on construction
29 * 3014 Timeout failures on MacOS
30 * 3023 NUnit runner fails when test method returns ValueTask<>
31 * 3035 Apartment state can't be used for .NET Standard 2.0 tests
32 * 3036 Apartment state can't be used for .NET Standard 2.0 tests
33 * 3038 TestName in TestCase attribute not validated to be not empty
34 * 3042 RequiresThreadAttribute allows ApartmentState.Unknown, unlike ApartmentAttribute
35 * 3048 Add .idea folder to .gitignore
36 * 3053 Conversion from TestCase string parameter to DateTimeOffset
37 * 3059 Constraint Throws.Exception does not work with async return value
38 * 3068 First Chance Exception in RuntimeFramework
39 * 3070 End support for .NET Framework 2.0 (released in 2005)
40 * 3073 CollectionAssert.AreEquivalent fails for ValueTuple Wrapped Dictionary
41 * 3079 Regression from 3.10 to 3.11: Range in bytes
42 * 3082 Is.Ordered.By
43 * 3085 XML Test-Suite Assembly does not contain DLL path anymore
44 * 3089 Remove outdated comment
45 * 3093 Tests having TaskLike objects as their return type throws Exception
46 * 3094 Bad error message if collections have different types
47 * 3104 Removed NET20 compile output
48 * 3105 Add tests for use of ApartmentState.Unknown in RequiresThreadAttribute
49 * 3107 Declare class in Program.cs provided with NUnitLite Nuget package static
50 * 3109 Azure DevOps build fails in Save package artifacts
51 * 3124 Switch copyright notice
52 * 3128 Correct documentation on ParallelScope
53 * 3137 Fix doc-comments in NUnitTestAssemblyRunner
54 * 3138 Assert.Ignore breaks when a Task is returned w/o using async/await
55 * 3139  Add Azure pipelines badge to frontpage
56 * 3144 Retry attribute should not derive from PropertyAttribute
57 * 3145 Capture additional exception details in the test output
58 * 3156 UnexpectedExceptionTests should tolerate Mono on Azure DevOps Ubuntu
59 * 3159 Make tests more tolerant
60 * 3161 https url repo
61 * 3166 Allow static SetUpFixture classes
62 * 3171 Incorrect type for Test Fixtures when using running explore with a filter
63 * 3175 Improve user-facing messages
64 * 3181 Template Based Test Naming - Incorrect truncation for individual arguments
65 * 3186 Fix licenseUrl element in nuspec, will be deprecated
66 * 3193 Cake Build Fails with Visual Studio 2019
67 * 3195 Drop or at least make Travis not required?
68 * 3231 Breaking change in filter functionality between framework 2.7 and 3.11
69 * 3209 Test fail when posting to SynchronizationContext.Current
70 * 3211 Fix logging
71 * 3218 Remove todos from the code base
72 * 3222 Our build script tests hang when run with Mono on Windows
73 * 3233 AndConstraint should write additional information from failed constraint
74
75### NUnit 3.11 - October 6, 2018
76
77 * More informative assertion messages
78 * PlatformAttribute is available on .NET Standard and now detects .NET Core
79 * ValuesAttribute now works with nullable types
80 * Async tests detecting and running Windows Forms or WPF message pumps rather than deadlocking
81 * Support for UWP 10.0 is back via .NET Standard 1.4
82
83#### Issues Resolved
84
85 * 352 Test with infinite loop in TearDown cannot be aborted
86 * 452 Deprecate the existing Chocolatey framework package
87 * 660 Order dependence of And and Or constraints should be documented
88 * 1200 async test + Apartment(ApartmentState.STA) => await not returning on STA thread
89 * 2123 Task.Run inside a test will result in deadlock if a control was created previously
90 * 2146 Assert.That with a Throws constraint does not provide as much info as Assert.Throws
91 * 2427 PropertyConstraint throws away the more helpful message in the base constraint result
92 * 2432 Ability to exclude/include the platform .NET Core
93 * 2450 NullReferenceException in ExceptionHelper.BuildMessage on Mono
94 * 2536 SetArgDisplayNames for TestCaseData and TestFixtureData
95 * 2611 Enable .NET Standard 1.6 tests on non-Windows
96 * 2693 Ensure that resharper settings are consistent with the editorconfig configuration
97 * 2757 Broken `char` comparison in v3.7 and higher
98 * 2759 Test fails with "No arguments were provided" error when no values returned from IParameterDataSource
99 * 2761 Infinite loop in nunit 3.9
100 * 2781 Fixed precompiler typo
101 * 2786 Timeout value not resetting on Retry of failed test
102 * 2790 Removing ITypeInfo abstraction
103 * 2798 [Request] Show actual count value when test fail on Has.Exactly(x).Items
104 * 2814 Remove public marker types
105 * 2819 Only run AppVeyor PR build against open PRs
106 * 2821 Save and restore the SynchronizationContext before and after each test case
107 * 2823 SetUp failed for test fixture - Array was not a one-dimensional array.  Issue seems related to byte[,] method parameters
108 * 2829 Obsoletion warning for DataAttribute
109 * 2831 Regular "BusyExecIdle after 200 milliseconds delay" CI failures
110 * 2833  Use longer BusyExecIdle to avoid CI failures
111 * 2836 NUnit.Framework.Does cannot be extended
112 * 2837 DictionaryContainsKeyConstraint behaviour is inconstant with Dictionary.ContainsKey when the dictionary uses a custom Comparer
113 * 2842 Supporting inheritance of Assert and related classes
114 * 2854 Has.All.../Has.None... - show non-matching items in error message
115 * 2863 Make tests robust without depending on the order of attributes
116 * 2867 Skip executing TestCaseSources for tests which are not included in the filter
117 * 2876 Implement Discovery-time filtering for NUnitLite
118 * 2883 Our public ConcurrentQueue causes type conflicts
119 * 2885 Copy/paste error in Assert.That documentation
120 * 2887 NETStandard 1.3 support dropped in NUnit 3.10
121 * 2896 Some tests are silently skipped on netstandard1.x since #2796
122 * 2898 AssemblyPath contains invalid charaters
123 * 2901 Values attribute support for nullable bool and enum types
124 * 2923 Update outdated CategoryAttribute xmldoc
125 * 2928 Improve error message on EmptyConstraint
126 * 2929 Added NUnit XML schemas
127 * 2940 Increase StackTracesAreFiltered amount to 5
128 * 2955 Potential threading issue in IsolatedContext
129 * 2965 NuGet Package : Add `repository` metadata.
130 * 2970 InvalidCastException @ NUnit.Framework.TestFixtureSourceAttribute.BuildFrom
131 * 2979 Warn.If in Assert.Multiple
132 * 2994 Error in .NET Standard 1.4 DictionaryContainsKeyConstraint MetadataToken compatibility methods
133 * 2996 Remove unused enum
134 * 3009 Fix failing CI Builds by upgrading to NUnit Console 3.9.0
135 * 3020 Upgrade nunit-vs-adapter to 3.10 for nUnit 3.11
136 * 3024 Unable to add `.IgnoreCase` modifier to an `AnyOf` constraint in collection constraints
137 * 3032 APIs to restore before 3.11
138
139### NUnit 3.10.1 - March 12, 2018
140
141Added a namespace to the props file included in the NuGet package to make it
142compatible with versions of Visual Studio prior to VS 2017.
143
144### NUnit 3.10 - March 12, 2018
145
146This release adds a .NET Standard 2.0 version of the framework which re-enables
147most of the features that have been missing in our earlier .NET Standard builds
148like parallelism, timeouts, directory and path based asserts, etc. It also contains
149numerous bug fixes and smaller enhancements. We've improved our XML docs,
150fixed performance issues and added more detail to Multiple Asserts.
151
152This release also contains source-indexed PDB files allowing developers to debug
153into the NUnit Framework. This allows you to track down errors or see how the
154framework works.
155
156In order to support the .NET Standard 2.0 version, the NUnit project switched to
157the new CSPROJ format and now requires Visual Studio 2017 to compile. This only
158effects people contributing to the project. NUnit still supports building and
159compiling your tests in older .NET IDEs and NUnit still supports older versions
160of the .NET Framework back to 2.0. For contributors, NUnit can now compile all
161supported targets on Windows, Linux and Mac using the Cake command line build.
162
163#### Issues Resolved
164
165 * 1373 Setting with a null value
166 * 1382 Use array argument contents in name of parameterized tests rather than just array type.
167 * 1578 TestContext.CurrentTest exposes too much internal info
168 * 1678 Result Message: OneTimeSetUp: Category name must not contain ',', '!', '+' or '-'
169 * 1944 Removing Compact Framework workarounds
170 * 1958 System.Reflection.TargetInvocationException after run finished
171 * 2033 Nameof refactor
172 * 2202 Best practices for XML doc comments
173 * 2325 Retry attribute doesn't retry the test.
174 * 2331 Repo does not build in VS without running `build -t build` first
175 * 2405 Improve PropertyConstraint error output
176 * 2421 Publishing symbols with releases
177 * 2494 CollectionAssert.AllItemsAreUnique() very slow
178 * 2515 Retarget Solution to use the New CSPROJ Format
179 * 2518 Bug in CollectionAssert.AreEqual for ValueTuples.
180 * 2530 Running tests on main thread. Revisiting #2483
181 * 2542 NUnit does not support parallelism on .NET Core 2.0
182 * 2555 CI timeout: NUnit.Framework.Assertions.CollectionAssertTest.PerformanceTests
183 * 2564 Add minClientVersion to .nuspec files
184 * 2566 Refactor `SimpleEnumerableWithIEquatable` test object
185 * 2577 Warning in TearDown is inconsistent with Assertion failure
186 * 2580 Remove unused defines
187 * 2591 NUnitEqualityComparer.Default should be replaced with new NUnitEqualityComparer()
188 * 2592 Add .props with ProjectCapability to suppress test project service GUID item
189 * 2608 Culture differences on .NET Core on non-Windows causes test failures
190 * 2622 Fix flakey test
191 * 2624 Prevent emails for successful builds on Travis
192 * 2626 SetUp/TearDown methods are invoked multiple times before/after test in .NET Standard targeted projects
193 * 2627 Breaking change in CollectionAssert.AllItemsAreUnique with NUnit 3.9
194 * 2628 Error during installing tools when running build script
195 * 2630 Framework throws NullReferenceException if test parameter is marked with [Values(null)]
196 * 2632 Parallel tests are loading 100% CPU when nested SetUpFixture exists
197 * 2639 ValuesAttribute causes ExpectedResult to have no effect
198 * 2647 Add Current Attempt indicator in TestContext for use with RetryAttribute
199 * 2654 Address feedback from @oznetmaster
200 * 2656 NuGet package links to outdated license
201 * 2659 Naming Errors
202 * 2662 NullReferenceException after parallel tests have finished executing
203 * 2663 Building NUnit .NET 4.5 in VS2017 fails
204 * 2669 Removed vestigial build script helper method
205 * 2670 Invalid assemblies no longer give an error message
206 * 2671 Ensure that FailureSite.Child is used where appropriate.
207 * 2685 Remove Rebracer file
208 * 2688 Assert.Throws swallows console output
209 * 2695 MultipleAssertException doesn't provide proper details on failures
210 * 2698 Syntax suggestions errors as warnings
211 * 2704 Add Constraint to test whether actual item is contained in expected collection
212 * 2711 NUnitLite: Add support for --nocolor option
213 * 2714 AnyOfConstraint enumerates multiple times
214 * 2725 Enable 'strict' compilation flag
215 * 2726 Replace the ConcurrentQueue and SpinWait compatibility classes
216 * 2727 Avoid treating warnings as errors inside the IDE
217 * 2734 TestCaseAttribute: ExpectedResult should support same value conversion as normal method arguments
218 * 2742 FailureSite not correctly set on containing suites when tests are ignored.
219 * 2749 Update Travis SDK versions
220
221### NUnit 3.9 - November 10, 2017
222
223This release addresses numerous parallelization issues that were introduced in 3.8
224when method level parallelization was added. Most of the parallelization issues
225resolved were tests never completing when using some combinations of parallel tests
226and `ApartmentState` not being properly applied to tests in all cases.
227
228#### Issues Resolved
229
230 * 893 Inconsistent Tuple behavior.
231 * 1239 NUnit3 sometimes hangs if SetUpFixtures are run in parallel
232 * 1346 NullReferenceException when [TestFixtureSource] refers to data in a generic class.
233 * 1473 Allow Is.Ordered to Compare Null Values
234 * 1899 Constraint Throws.Exception does not catch exception with async lambdas
235 * 1905 SetupFixture without namespace will make assembly-level Parallelizable attribute useless
236 * 2091 When a native exception of corrupted state is thrown, nunit test thread crashes and the nunit-console process hangs
237 * 2102 NUnitLite incorrectly reports Win 10 OS name
238 * 2271 When CollectionAssert.AreEqual do compare each element, it will ignore the IEquatable of the element too
239 * 2289 ResolveTypeNameDifference does not handle generic types well
240 * 2311 Resolve test projects' namespace situation
241 * 2319 Add .editorconfig to set file encodings so that people don't have to think about it
242 * 2364 Parallelizable attribute not invalidating invalid parallel scope combinations
243 * 2372 Create testing for compounded ConstraintFilters
244 * 2388 Parallelization causes test cases to stop respecting fixture's apartment state
245 * 2395 NUnit 3.8+ does not finish running tests
246 * 2398 NUnit CI spurious failures, NUnit.Framework.Internal.ThreadUtilityTests.Kill
247 * 2402 --labels=All doesn't show anything in console output executing NUnitLite Console Runner
248 * 2406 Summary descriptions replaced by more detailed ones
249 * 2411 And constraint on Has.Member throws
250 * 2412 Using fluent syntax unintentionally removed in 3.8
251 * 2418 Support equality comparison delegate
252 * 2422 Has.Property causes AmbiguousMatchException for shadowing properties
253 * 2425 XML doc typo fix
254 * 2426 Regression in 3.8.1: ApartmentAttribute no longer works when applied to an assembly
255 * 2428 Fix NullReferenceExceptions caused by WorkItemQueue not being thread-safe
256 * 2429 Stack trace shown for Assert.Warn
257 * 2438 [Parallelizable] hangs after a few tests
258 * 2441 Allows to override load-time/execution-time interfaces in built-in tests attributes
259 * 2446 CI failure in mono Warning tests
260 * 2448 Inherited Test SetUp, TearDown, etc. are not executed in .NET Core if they are not public
261 * 2451 Compile RegEx to improve performance
262 * 2454 SetUpFixture not respecting NonParallelizable tag on TestFixtures.
263 * 2459 [Parallelizable(ParallelScope.Children)] Unable to finish tests
264 * 2465 Possible wrong properties are returned by reflection in ReflectionExtensions.cs
265 * 2467 Test execution hangs when using [SetUpFixture] with NUnit 3.8.x
266 * 2469 Allow RangeAttribute to be specified multiple times for the same argument
267 * 2471 Parametrized testcases not running in parallel
268 * 2475 Framework incorrectly identifies Win 10 in xml results
269 * 2478 Attributes on SetUpFixture are not applied
270 * 2486 Message when asserting null with Is.EquivalentTo could be more helpful
271 * 2497 Use ConstraintUtils.RequireActual through out the codebase
272 * 2504 Support changing test display name on TestFixtureData
273 * 2508 Correct divergence from shadowed Is / Has members.
274 * 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
275 * 2525 Remove unwanted space from comment
276 * 2526 SerializationException in low trust floating point equality test
277 * 2533 Matches<T>(Predicate<T>) throws ArgumentException or Fails when actual is null
278 * 2534 SetUpFixture causes NUnit to lock with Apartment( STA )
279 * 2551 CollectionItemsEqualConstraint is missing Using(Func<T, T, bool>)
280 * 2554 Made TestFixtureData.SetName internal for 3.9
281
282### NUnit 3.8.1 - August 28, 2017
283
284This release fixes two critical regressions in the 3.8 release. The first caused the console
285runner to crash if you are using test parameters. The second issue caused collection
286constraints checking for multiple items in a collection to fail.
287
288#### Issues Resolved
289
290 * 2386 Contains.Item() fails for collections in NUnit 3.8
291 * 2390 Missing value attribute in test parameters setting causes NullReferenceException in console
292
293### NUnit 3.8 - August 27, 2017
294
295This release removes several methods and attributes that were marked obsolete in the
296original 3.0 release. Support for iOS and Android has been improved.
297
298An issue that caused unit tests to run slower was addressed as was a bug that prevented
299the use of Assert.Multiple in async code.
300
301The Order attribute can now also be applied to the class level to set the order
302that test fixtures will be run.
303
304#### Issues Resolved
305
306 * 345  Order of Fixture Execution
307 * 1151 Include differences in output for Is.EquivalentTo
308 * 1324 Remove CollectionContainsConstraint
309 * 1670 Attaching files to the test result
310 * 1674 InRange-Constraint must work with object
311 * 1851 TestCaseSource unable to pass one element byte array
312 * 1996 Timeout does not work if native code is running at the time
313 * 2004 Has.One as synonym for Has.Exactly(1).Items
314 * 2062 TestCaseSource attribute causes test to pass when source is not defined
315 * 2144 Allow option on RandomAttribute to produce distinct values
316 * 2179 Some NUnit project's tests fail on systems with CultureInfo other than en
317 * 2195 Contains.Substring with custom StringComparison
318 * 2196 Expose ParallelizableAttribute (and other attribute) constructor arguments as properties
319 * 2201 Invalid platform name passed to PlatformAttribute should mark test NotRunnable
320 * 2208 StackFIlter trims leading spaces from each line
321 * 2213 SetCultureAttribute: CultureInfo ctor should use default culture settings
322 * 2217 Console runner performance varies wildly depending on environmental characteristics
323 * 2219 Remove Obsolete Attributes
324 * 2225 OneTimeTearDown and Dispose Ordering
325 * 2237 System.Runtime.Loader not available for iOS/Android
326 * 2242 Running tests directly should never surface a NullReferenceException
327 * 2244 Add KeyValuePair<TKey, TValue> to the default formatters
328 * 2251 Randomizer.NextGuid()
329 * 2253 Parallelizable(ParallelScope.Fixtures) doesn't work on a TestFixture
330 * 2254 EqualTo on ValueTuple with Nullable unexpected
331 * 2261 When an assembly is marked with ParallelScope.None and there are Parallelizable tests NUnit hangs
332 * 2269 Parallelizable and NonParallelizable attributes on setup and teardown silently ignored
333 * 2276 Intermittent test failures in Travic CI: TestContextTests
334 * 2281 Add type constraint for Throws and any method requiring Exception
335 * 2288 Killing thread cancels test run
336 * 2292 Is.Ordered.By() with a field throws NullReferenceException
337 * 2298 Write TestParametersDictionary to xml result file in readable format
338 * 2299 NUnitLite NuGet package no longer installs NUnit NuGet package
339 * 2304 Revert accidental doc removal
340 * 2305 Correct misprint ".con" -> ".com"
341 * 2312 Prevent crash on invalid --result parsing in NUnitLite
342 * 2313 Incorrect xmldoc on RetryAttribute
343 * 2332 Update build script to use NUnitConsoleRunner v3.7.0
344 * 2335 Execute OneTimeTearDown as early as possible when running fixtures in parallel
345 * 2342 Remove deprecated Is.String* Constraints
346 * 2348 Can't use Assert.Multiple with async code
347 * 2353 Provide additional Result information through TestContext
348 * 2358 Get framework to build under Mono 5.0
349 * 2360 Obsolete CollectionContainsConstraint Constructors
350 * 2361 NUnit Parallelizable and OneTimeSetUp with no namespace results in single-threaded test execution
351 * 2370 TestCaseAttribute can't convert int to nullable long
352
353### NUnit 3.7.1 - June 6, 2017
354
355This is a hotfix release that addresses occasional hangs when using test parallelization
356and fixes crashes in NCrunch prior to version 3.9.
357
358#### Issues Resolved
359
360 * 2205 Ncrunch: System.Xml.XmlException: Root element is missing, when adding NUnit 3.7.0
361 * 2209 NUnit occasionally hangs when parallelizable TestFixture has OneTimeSetUp and OneTimeTearDown
362
363### NUnit 3.7 - May 29, 2017
364
365This release of NUnit expands on parallel test execution to allow test methods to
366be run in parallel. Please see the [Parallelizable Attribute](https://github.com/nunit/docs/wiki/Parallelizable-Attribute)
367for more information.
368
369NUnit 3.7 also drops the Portable build of the framework and replaces it with a
370.NET Standard 1.3 version to compliment the .NET Standard 1.6 version. This change
371enables several constraints and other features in the .NET Standard builds that
372weren't available in portable like Path and Directory based asserts.
373
374The AssertionHelper class has been deprecated because it is seldom used and has
375not received any of the updates that Asserts and Constraints receive. If your code
376is using the AssertionHelper class, we recommend that you migrate your asserts.
377
378#### Issues Resolved
379
380 * 164 Run test methods within a fixture in parallel
381 * 391 Multiple Assertions
382 * 652 Add ability to execute test actions before SetUp or OneTimeSetUp
383 * 1000 Support multiple Author attributes per test
384 * 1096 Treat OneTimeSetup and OneTimeTearDown as separate work items
385 * 1143 NUnitLite - Explore flag does not apply where filter to output
386 * 1238 Feature request: Print LoaderExceptions when fixture loading fails
387 * 1363 Make Timeouts work without running test on its own thread
388 * 1474 Several SetUpFixtures at the same level may be active at the same time
389 * 1819 TestContext.Progress.Write writes new line
390 * 1830 Add --labels switch changes to nunilite and nunitlite tests
391 * 1859 ConcurrentQueue is duplicate with System.Threading.dll package
392 * 1877 Resolve differences between NUnit Console and NUnitLite implementations of @filename
393 * 1885 Test parameter containing a semicolon
394 * 1896 Test has passed however Reason with an empty message is printed in the xml
395 * 1918 Changing DefaultFloatingPointTolerance breaks tests running in parallel
396 * 1932 NUnit Warn class should be removed from stack trace by filter
397 * 1934 NullReferenceException when null arguments are used in TestFixtureAttribute
398 * 1952 TestContext.Out null when used in task with .NET Core
399 * 1963 Investigate removing SpecialValue
400 * 1965 TestContext does not flow in async method
401 * 1971 Switch CHANGES.txt to Markdown
402 * 1973 Implemented TestExecutionContext to use AsyncLocal<> for NETSTANDARD1_6
403 * 1975 TestFixtureSource doesn't work with a class that has no namespace
404 * 1983 Add missing ConstraintExpression.Contain overload
405 * 1990 Add namespace filter
406 * 1997 Remove unused --verbose and --full command line options
407 * 1999 Author Tests assume ICustomAttributeProvider.GetCustomAttributes return order is defined
408 * 2003 Better user info about ParallelizableAttribute and ParallelScope
409 * 2005 Exclude empty failure messages from results xml
410 * 2007 3.6 Multiple assertion backwards compatibility
411 * 2010 Add DelayedConstraint in NetStandard 1.6 build
412 * 2020 Better message when timeout fails
413 * 2023 Ability to abort threads running a message pump
414 * 2025 NullReferenceException using Is.EqualTo on two unequal strings
415 * 2030 Add method to mark tests as invalid with a reason
416 * 2031 Limit Language level to C#6
417 * 2034 Remove silverlight project - no longer used
418 * 2035 NullReferenceException inside failing Assert.That call
419 * 2040 Cannot catch AssertionException
420 * 2045 NUnitlite-runner crashes if no file is provided
421 * 2050 Creation of TestExecutionContext should be explicit
422 * 2052 NullReferenceException with TestCaseSource if a property has no setter
423 * 2061 TestContext.WorkDirectory not initialized during build process
424 * 2079 Make TestMethod.Arguments public or otherwise accessible (e.g. TestContext)
425 * 2080 Allow comments in @FILE files
426 * 2087 Enhance error message: Test is not runnable in single-threaded context. Timeout
427 * 2092 Convert Portable library to .NET Standard 1.3
428 * 2095 Extend use of tolerance to ComparisonConstraints
429 * 2099 Include type in start-suite/start-test report elements
430 * 2110 NullReferenceException when getting TestDirectory from TestContext
431 * 2115 Mark AssertionHelper as Obsolete
432 * 2121 Chained PropertyConstraint constraints report incorrect ActualValue
433 * 2131 Remove "Version 3" suffix from NUnitLite NuGet Package
434 * 2132 TestFixtureTests.CapturesArgumentsForConstructorWithMultipleArgsSupplied assumes order of custom attributes
435 * 2143 Non-parallel fixture with parallel children runs in parallel with other fixtures
436 * 2147 Test Assembly using NUnitLite & Nunit 3.6.1 hangs under .NET Core when `--timeout` is supplied on command line
437 * 2150 Add portable-slow-tests to Cake file
438 * 2152 Allow attaching files to TestResults
439 * 2154 Fix execution of non-parallel test fixtures
440 * 2157 Getting WorkerId inside Assert.Throws / DoesNotThrow returns null instead of previous non-null value
441 * 2158 Update SetupFixtureAttribute XML Docs
442 * 2159 Prevent crash in .NET standard with log file path
443 * 2165 Trying to install NUnit 3.6.1 on .NET Framework asks for download of 20 more packages
444 * 2169 Incorrect xmldocs for SetUpAttribute
445 * 2170 Cake build fails if only Visual Studio 2017 installed
446 * 2173 Remove PreTestAttribute and PostTestAttribute
447 * 2186 Replace special characters as part of converting branch names to package versions
448 * 2191 System.Reflection.TargetInvocationException with nunit3-console --debug on Mono
449
450### NUnit 3.6.1 - February 26, 2017
451
452This is a hotfix release of the framework that addresses critical issues found in
453the 3.6 release.
454
455#### Issues Resolved
456
457 * 1962 A Theory with no data passes
458 * 1986 NUnitLite ignores --workers option
459 * 1994 NUnitLite runner crashing when --trace is specified
460 * 2017 Two NUnit project's tests fail on systems with comma decimal mark settings
461 * 2043 Regression in 3.6.0 when catching AssertionException
462
463### NUnit 3.6 - January 9, 2017
464
465This release of the framework no longer includes builds for Compact Framework or
466for SilverLight, but adds a .NET Standard 1.6 build. If anyone still using
467Compact Framework or SilverLight and would like to continue development on those
468versions of the framework, please contact the NUnit team.
469
470#### Framework
471
472 * .NET Standard 1.6 is now supported
473 * Adds support for Multiple Assert blocks
474 * Added the --params option to NUnitLite
475 * Theories now support Nullable enums
476 * Improved assert error messages to help differentiate differences in values
477 * Added warnings with Warn.If(), Warn.Unless() and Assert.Warn()
478 * Enabled Path, File and Directory Asserts/Contraints for .NET Core testing
479 * Added NonTestAssemblyAttribute for use by third-party developers to indicate
480   that their assemblies reference the NUnit framework, but do not contain tests
481
482#### Issues Resolved
483
484 * 406 Warning-level Assertions
485 * 890 Allow file references anywhere in the command line.
486 * 1380 Appveyor Failures when branch name is too long
487 * 1589 Split the nunit repository into multiple repositories
488 * 1599 Move Compact Framework to separate project
489 * 1601 Move Silverlight to a separate project
490 * 1609 Upgrade Cake build to latest version
491 * 1661 Create .NET Standard Framework Build
492 * 1668 Need implementation-independent way to test number of items in a collection
493 * 1743 Provide multiple results for a test case in the XML output
494 * 1758 No direct inverse for Contains.Key
495 * 1765 TestCaseSourceAttribute constructor for method with parameters
496 * 1802 Design Multiple Assert syntax as seen by users
497 * 1808 Disambiguate error messages from EqualConstraint
498 * 1811 Build.ps1 fails if spaces in path
499 * 1823 Remove engine nuspecs and old global.json
500 * 1827 Remove unused repository paths from repositories.config
501 * 1828 Add Retry for failed tests only
502 * 1829 NUnitLite accepts --params option but does not make any use of it.
503 * 1836 Support nullable enums in Theories
504 * 1837 [Request] AfterContraint to support more readable usage
505 * 1840 Remove SL and CF #Defined source
506 * 1866 [Request] More readable way to set polling interval in After constraint
507 * 1870 EqualConstraint result failure message for DateTime doesn't show sufficient resolution
508 * 1872 Parameterized method being called with no parameter
509 * 1876 What should we do about Env.cs
510 * 1880 AttributeUsage for various Attributes
511 * 1889 Modify nunitlite to display multiple assert information
512 * 1891 TestContext.Progress and TestContext.Error silently drop text that is not properly XML encoded
513 * 1901 Make nunitlite-runner Prefer32Bit option consistent across Debug/Release
514 * 1904 Add .NET Standard 1.6 Dependencies to the Nuspec Files
515 * 1907 Handle early termination of multiple assert block
516 * 1911 Changing misleading comment that implies that every `ICollection<T>` is a list
517 * 1912 Add new warning status and result state
518 * 1913 Report Warnings in NUnitLite
519 * 1914 Extra AssertionResult entries in TestResults
520 * 1915 Enable Path, File and Directory Assert/Constraints in the .NET Standard Build
521 * 1917 Use of IsolatedContext breaks tests in user-created AppDomain
522 * 1924 Run tests using the NUnit Console Runner
523 * 1929 Rename zip and remove source zip
524 * 1933 Tests should pass if test case source provides 0 test cases
525 * 1941 Use dictionary-based property for test run parameters
526 * 1945 Use high-quality icon for nuspecs
527 * 1947 Add NonTestAssemblyAttribute
528 * 1954 Change Error Message for Assert.Equals
529 * 1960 Typo fixes
530 * 1966 Xamarin Runner cannot reference NUnit NuGet Package
531
532### NUnit 3.5 - October 3, 2016
533
534This is the first version of NUnit where the framework will be released separately from the
535console runner, engine and other extensions. From this point forward, the NUnit Framework will be
536released on its own schedule that is not bound to that of any other NUnit project and version numbers
537may diverge over time.
538
539This is also the first release where the NUnit Framework will not be included in the installer. Only
540the console runner, engine and extensions will be available as an MSI installer. We recommend that you
541use the NUnit NuGet packages for the framework, but a ZIP file with the binaries will also be available.
542
543#### Framework
544
545 * Added Assert.Zero and Assert.NotZero methods
546 * You can now pass a `Func<string>` to Asserts to lazily evaluate exception messages
547 * Added the ability to Assert on the order of multiple properties in a collection
548 * Tests with a Timeout will no longer timeout while you are debugging
549
550#### Issues Resolved
551
552 * 144 Pass a `Func<string>` to lazily evaluate an exception message
553 * 995 Enable Warning as Error
554 * 1106 Move various Assembly Info files under Properties for CF
555 * 1334 Add Assert.Zero and Assert.NotZero
556 * 1479 Don't enforce [Timeout] when debugger is attached
557 * 1540 Remove old .NET Core Projects
558 * 1553 Allow ordering tests to be done in multiple properties
559 * 1575 Escaping control chars in custom message
560 * 1596 Eliminate code sharing across projects to be split
561 * 1598 Split framework and console/engine into separate projects
562 * 1610 Refactor dependencies in build.cake
563 * 1615 Appveyor error in TestCF
564 * 1621 Remove console and command-line option files from common
565 * 1640 When submitting only part of optional parameters, all are overriden by defaults
566 * 1641 Create OSX CI Build on Travis
567 * 1663 Find way to hide NUnit.Compatability.Path from intellisense
568 * 1681 NUnitLite under .net core doesn't support TeamCity output
569 * 1683 Existence of SerializableAttribute in .NET Core
570 * 1693 2 unit tests fail due to localization
571 * 1716 Move installer to new repository
572 * 1717 Change suffix for master builds
573 * 1723 Remove Cake target TestAll
574 * 1739 Create separate copies of MockAssembly for framework, engine and extensions
575 * 1751 Serializable attribute exists in both System.Runtime.Serialization.Formatters and nunit.framework
576 * 1775 Support NUnit assertions in partial trust code.
577 * 1800 Remove Console/Engine projects from nunit.linux.sln
578 * 1805 Error message "arguments provided for method not taking any" seems incomplete / doesn't make much sense
579 * 1815 Prevent NullReferenceException in SubPathConstraint
580
581### NUnit 3.4.1 - June 30, 2016
582
583#### Console Runner
584
585 * A new option, --list-extensions, will display all the engine extensions that
586   have been installed by the engine.
587
588#### Issues Resolved
589
590 * 1623 NUnit 3.4 is not integrated with TeamCity
591 * 1626 NUnit.ConsoleRunner is not picking up NUnit.Extension.NUnitV2ResultWriter
592 * 1628 Agent's process stays in memory when it was failed to unload AppDomain
593 * 1635 Console option to list loaded extensions
594
595### NUnit 3.4 - June 25, 2016
596
597#### Framework
598
599 * Improvements in comparing equality using `IEquatable<T>`
600 * Test case names will only be truncated if the runner requests it or it is overridden on the command line
601   with the --test-name-format option
602 * The .NET 2.0 version of the framework now includes LINQ. If your tests target .NET 2.0, you can now use
603   LINQ queries in your tests
604
605#### Engine
606
607 * The TeamCity event listener has been separated out into an engine extension
608 * Fixed numerous issues around thread safety of parallel test runs
609 * Additional fixes to reduce memory usage
610 * Fixes for Mono 4.4
611
612#### Console Runner
613
614 * There is a new --params command line option that allows you to pass parameters to your tests
615   which can be retrieved using TestContext.Parameters
616 * Another new command line option --loaduserprofile causes the User Profile to be loaded into the
617   NUnit Agent process.
618
619#### Issues Resolved
620
621 * 329 (CLI) Runner does not report AppDomain unloading timeout
622 * 720 Need a way to get test-specific command-line arguments at runtime
623 * 1010 Need to control engine use of extensions
624 * 1139 Nunit3 console doesn't show test output continously
625 * 1225 The --teamcity option should really be an extension
626 * 1241 Make TestDirectory accessible when TestCaseSource attributes are evaluated
627 * 1366 Classname for inherited test is not correct
628 * 1371 Support `dotnet test` in .NET CLI and .NET Core
629 * 1379 Console returns 0 for invalid fixtures
630 * 1422 Include TestListWithEmptyLine.tst in ZIP Package
631 * 1423 SingleThreaded attribute should raise an error if a thread is required
632 * 1425 Lazy initialization of OutWriter in TestResult is not thread safe
633 * 1427 Engine extensions load old packages
634 * 1430 TestObjects are retained for lifetime of test run, causing high memory usage
635 * 1432 NUnit hangs when reporting to TeamCity
636 * 1434 TestResult class needs to be thread-safe
637 * 1435 Parallel queue creation needs to be thread-safe
638 * 1436 CurrentFramework and Current Platform need to be more thread-safe
639 * 1439 EqualConstraint does Not use Equals Override on the Expected Object
640 * 1441 Add Linq for use internally in .NET 2.0 code
641 * 1446 TestOrderAttributeTests is not public
642 * 1450 Silverlight detection doesn't work when building on 32-bit OS
643 * 1457 Set the 2.0 build to ignore missing xml dcoumentation
644 * 1463 Should TestResult.AssertCount have a public setter?
645 * 1464 TNode.EscapeInvalidXmlCharacters recreates Regex continually
646 * 1470 Make EventQueue and associated classes lock-less and thread safe
647 * 1476 Examine need for "synchronous" events in event queue
648 * 1481 TestCase with generic return type causes NullReferenceException
649 * 1483 Remoting exceptions during test execution
650 * 1484 Comparing Equality using `IEquatable<T>` Should Use Most Specific Method
651 * 1493 NUnit 2 test results report ParameterizedMethod but should be ParameterizedTest
652 * 1507 NullReferenceException when null arguments are used in TestFixtureAttribute
653 * 1513 Add new teamcity extension to packages
654 * 1518 NUnit does not send the "testStarted" TeamCity service message when exception was thrown from SetUp/OneTimeSetUp
655 * 1520 Detect Portable, Silverlight and Compact and give error message
656 * 1528 Use of Sleep(0) in NUnit
657 * 1543 Blank name attribute in nunit2-formatted XML result file test-run element
658 * 1547 Create separate assembly for System.Linq compatibility classes
659 * 1548 Invalid Exception when engine is in a 32-bit process
660 * 1549 Changing default behavior for generating test case names
661 * 1551 Path in default .addins file for ConsoleRunner package may not exist
662 * 1555 EndsWith calls in Constraint constructor can cause major perf issues
663 * 1560 Engine writes setting file unnecessarily
664 * 1573 Move Nunit.Portable.Agent to new Repo
665 * 1579 NUnit v3 dangerously overrides COMPLUS_Version environment variable
666 * 1582 Mono 4.4.0 Causes Test Failures
667 * 1593 Nunit Console Runner 3.2.1 and Mono 4.4 throws RemotingException
668 * 1597 Move Portable agent to its own repository
669 * 1605 TeamCity package has no pre-release suffix
670 * 1607 nunit.nuget.addins discovery pattern is wrong then restored through project.json
671 * 1617 Load user profile on test runners
672
673### NUnit 3.2.1 - April 19, 2016
674
675#### Framework
676
677 * The output and error files are now thread safe when running tests in parallel
678 * Added a .NET 3.5 build of the framework preventing conflicts with the compatiblity classes in the 2.0 framework
679 * Added a SingleThreadedAttribute to be added to a TestFixture to indicate all child tests should run on the same thread
680
681#### Engine
682
683 * Unless required, run all tests within a fixture on the same thread
684 * Added an EventListener extension point
685 * Reduced memory usage
686
687#### Console Runner
688
689 * No longer probes for newer versions of the engine, instead uses the engine that is included with the console
690
691#### Issues Resolved
692
693 *  332 Add CF to the Appveyor CI build
694 *  640 Keep CF Build (and other future builds) in Sync
695 *  773 Upgrade Travis CI from Legacy Infrastructure
696 * 1141 Explicit Tests get run when using --where with some filters
697 * 1161 NUnit3-Console should disallow the combination of --inprocess and --x86, giving an error message
698 * 1208 Apartment on assembly level broken
699 * 1231 Build may silently fail some tests
700 * 1247 Potential memory issue
701 * 1266 SetCultureAttribute does not work if set on assembly level
702 * 1302 Create EventListener ExtensionPoint for the Engine
703 * 1317 Getting CF framework unit tests running on CI build
704 * 1318 NUnit console runner fails with error code -100
705 * 1327 TestCaseSource in NUnit 3 converts an argument declared as String[] to String
706 * 1329 Unable to build without Compact Framework
707 * 1333 Single Thread per Worker
708 * 1338 BUILDING.txt is outdated
709 * 1349 Collision on System.Func from nunit.framework with System.Core in .Net 3.5 (CS0433)
710 * 1352 Tests losing data setup on thread
711 * 1359 Compilation error in NUnitPortableDriverTests.cs
712 * 1383 Skip Silverlight build if SDK not installed
713 * 1386 Bug when using Assert.Equals() with types that explicitly implement `IEquatable<T>`
714 * 1390 --testlist with file with blank first line causes IndexOutOfRangeException
715 * 1399 Fixed NullReference issue introduced by the fix for #681
716 * 1405 ITestRunner.StopRun throws exception of type 'System.MissingMethodException'
717 * 1406 TextCapture is not threadsafe but is used to intercept calls that are expected to be threadsafe
718 * 1410 Make OutFile and ErrFile streamwriters synchronized
719 * 1413 Switch console to use a local engine
720
721### NUnit 3.2 - March 5, 2016
722
723#### Framework
724
725 * Added an Order attribute that defines the order in which tests are run
726 * Added Assert.ThrowsAsync for testing if async methods throw an exception
727 * You can now compare unlike collections using Is.EquivalentTo().Using(...)
728 * Added the ability to add custom message formatters to MsgUtils
729 * TestCaseSourceAttribute now optionally takes an array of parameters that can be passed to the source method
730 * Added Is.Zero and Is.Not.Zero to the fluent syntax as a shorter option for Is.EqualTo(0) and Is.Not.EqualTo(0)
731
732#### Engine
733
734 * Engine extensions can be installed via NuGet packages
735
736#### Issues Resolved
737
738 * 170 Test Order Attribute
739 * 300 Create an NUnit Visual Studio Template
740 * 464 Async delegate assertions
741 * 532 Batch runner for Silverlight tests
742 * 533 Separate NUnitLite runner and autorunner
743 * 681 NUnit agent cannot resolve test dependency assemblies when mixed mode initialization runs in the default AppDomain
744 * 793 Replace CoreEngine by use of Extensions
745 * 907 Console report tests are too fragile
746 * 922 Wrap Console in NUnitLite
747 * 930 Switch from MSBuild based build system to Cake
748 * 981 Define NUnit Versioning for post-3.0 Development
749 * 1004 Poor formatting of results for Assert.AreEqual(DateTimeOffset, DateTimeOffset)
750 * 1018 ArgumentException when 2.x version of NUnit Framework is in the bin directory
751 * 1022 Support Comparing Unlike Collections using Is.EquivalentTo().Using(...)
752 * 1044 Re-order Test Summary Errors/Failures
753 * 1066 ApartmentAttribute and TestCaseAttribute(s) do not work together
754 * 1103 Can't use TestCaseData from base class
755 * 1109 NullReferenceException when using inherited property for ValueSource
756 * 1113 Console runner and xml output consistency
757 * 1117 Fix misbehaviour of Throws.Exception with non-void returning functions
758 * 1120 NUnitProject should parse .nunit project files containing Xml Declarations
759 * 1121 Usage of field set to null as value source leads to somewhat cryptic error
760 * 1122 Region may be disposed before test delegate is executed
761 * 1133 Provide a way to install extensions as nuget packages
762 * 1136 Don't allow V2 framework to update in V2 driver tests
763 * 1171 A bug when using Assert.That() with Is.Not.Empty
764 * 1185 Engine finds .NET 4.0 Client Profile twice
765 * 1187 ITestAssemblyRunner.StopRun as implemented by NUnitTestAssemblyRunner
766 * 1195 name attribute in test-suite and test-results element of output xml is different to nunit 2.6.4 using nunit2-format
767 * 1196 Custom value formatter for v3 via MsgUtils
768 * 1210 Available runtimes issues
769 * 1230 Add ability for testcasedatasource to have parameters passed to methods
770 * 1233 Add TestAssemblyRunner tests to both portable and silverlight builds
771 * 1234 Have default NUnitLite Runner Program.cs return exit code
772 * 1236 Make Appveyor NuGet feed more useable
773 * 1246 Introduce Is.Zero syntax to test for zero
774 * 1252 Exception thrown when any assembly is not found
775 * 1261 TypeHelper.GetDisplayName generates the wrong name for generic types with nested classes
776 * 1278 Fix optional parameters in TestCaseAttribute
777 * 1282 TestCase using Params Behaves Oddly
778 * 1283 Engine should expose available frameworks.
779 * 1286 value of the time attribute in nunit2 outputs depends on the machine culture
780 * 1297 NUnit.Engine nuget package improvements
781 * 1301 Assert.AreNotSame evaluates ToString unnecessarily
782
783### NUnit 3.0.1 - December 1, 2015
784
785#### Console Runner
786
787 * The Nunit.Runners NuGet package was updated to become a meta-package that pulls in the NUnit.Console package
788 * 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
789
790#### Issues Resolved
791
792 * 994 Add max number of Agents to the NUnit project file
793 * 1014 Ensure NUnit API assembly updates with MSI installs
794 * 1024 Added --pause flag to console runner
795 * 1030 Update Nunit.Runners package to 3.0
796 * 1033 "No arguments were provided" with Theory and Values combination
797 * 1035 Check null arguments
798 * 1037 Async tests not working on Windows 10 Universal
799 * 1041 NUnit2XmlResult Writer is reporting Sucess when test fails
800 * 1042 NUnit2 reports on 3.0 is different than 2.6.4
801 * 1046 FloatingPointNumerics.AreAlmostEqualUlps throws OverflowException
802 * 1049 Cannot select Generic tests from command line
803 * 1050 Do not expose System.Runtime.CompilerServices.ExtensionAttribute to public
804 * 1054 Create nuget feeds for CI builds on Appveyor
805 * 1055 nunit3 console runner --where option does not return error on invalid selection string
806 * 1060 Remove "Version 3" from NUnit Nuget Package
807 * 1061 Nunit30Settings.xml becomes corrupted
808 * 1062 Console.WriteLine statements in "OneTimeSetUp" and "OneTimeTearDown" annotated methods are not directed to the console when using nunit3-console.exe runner
809 * 1063 Error in Random Test
810
811### NUnit 3.0.0 Final Release - November 15, 2015
812
813#### Issues Resolved
814
815 * 635 Mono 4.0 Support
816
817### NUnit 3.0.0 Release Candidate 3 - November 13, 2015
818
819#### Engine
820
821 * 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.
822
823   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!
824
825#### Issues Resolved
826
827 * 856 Extensions support for third party runners in NUnit 3.0
828 * 1003 Delete TeamCityEventHandler as it is not used
829 * 1015 Specifying .nunit project and --framework on command line causes crash
830 * 1017 Remove Assert.Multiple from framework
831
832### NUnit 3.0.0 Release Candidate 2 - November 8, 2015
833
834#### Engine
835
836 * The IDriverFactory extensibility interface has been modified.
837
838#### Issues Resolved
839
840 * 970  Define PARALLEL in CF build of nunitlite
841 * 978  It should be possible to determine version of NUnit using nunit console tool
842 * 983  Inconsistent return codes depending on ProcessModel
843 * 986  Update docs for parallel execution
844 * 988  Don't run portable tests from NUnit Console
845 * 990  V2 driver is passing invalid filter elements to NUnit
846 * 991  Mono.Options should not be exposed to public directly
847 * 993  Give error message when a regex filter is used with NUnit V2
848 * 997  Add missing XML Documentation
849 * 1008 NUnitLite namespace not updated in the NuGet Packages
850
851### NUnit 3.0.0 Release Candidate - November 1, 2015
852
853#### Framework
854
855 * The portable build now supports ASP.NET 5 and the new Core CLR.
856
857   NOTE: The `nunit3-console` runner cannot run tests that reference the portable build.
858   You may run such tests using NUnitLite or a platform-specific runner.
859
860 * `TestCaseAttribute` and `TestCaseData` now allow modifying the test name without replacing it entirely.
861 * The Silverlight packages are now separate downloads.
862
863#### NUnitLite
864
865 * The NUnitLite runner now produces the same output display and XML results as the console runner.
866
867#### Engine
868
869 * The format of the XML result file has been finalized and documented.
870
871#### Console Runner
872
873 * The console runner program is now called `nunit3-console`.
874 * Console runner output has been modified so that the summary comes at the end, to reduce the need for scrolling.
875
876#### Issues Resolved
877
878 *  59 Length of generated test names should be limited
879 *  68 Customization of test case name generation
880 * 404 Split tests between nunitlite.runner and nunit.framework
881 * 575 Add support for ASP.NET 5 and the new Core CLR
882 * 783 Package separately for Silverlight
883 * 833 Intermittent failure of WorkItemQueueTests.StopQueue_WithWorkers
884 * 859 NUnit-Console output - move Test Run Summary to end
885 * 867 Remove Warnings from Ignored tests
886 * 868 Review skipped tests
887 * 887 Move environment and settings elements to the assembly suite in the result file
888 * 899 Colors for ColorConsole on grey background are too light
889 * 904 InternalPreserveStackTrace is not supported on all Portable platforms
890 * 914 Unclear error message from console runner when assembly has no tests
891 * 916 Console runner dies when test agent dies
892 * 918 Console runner --where parameter is case sensitive
893 * 920 Remove addins\nunit.engine.api.dll from NuGet package
894 * 929 Rename nunit-console.exe
895 * 931 Remove beta warnings from NuGet packages
896 * 936 Explicit skipped tests not displayed
897 * 939 Installer complains about .NET even if already installed
898 * 940 Confirm or modify list of packages for release
899 * 947 Breaking API change in ValueSourceAttribute
900 * 949 Update copyright in NUnit Console
901 * 954 NUnitLite XML output is not consistent with the engine's
902 * 955 NUnitLite does not display the where clause
903 * 959 Restore filter options for NUnitLite portable build
904 * 960 Intermittent failure of CategoryFilterTests
905 * 967 Run Settings Report is not being displayed.
906
907### NUnit 3.0.0 Beta 5 - October 16, 2015
908
909#### Framework
910
911 * Parameterized test cases now support nullable arguments.
912 * The NUnit framework may now be built for the .NET Core framework. Note that this is only available through building the source code. A binary will be available in the next release.
913
914#### Engine
915
916 * The engine now runs multiple test assemblies in parallel by default
917 * The output XML now includes more information about the test run, including the text of the command used, any engine settings and the filter used to select tests.
918 * Extensions may now specify data in an identifying attribute, for use by the engine in deciding whether to load that extension.
919
920
921#### Console Runner
922
923 * The console now displays all settings used by the engine to run tests as well as the filter used to select tests.
924 * The console runner accepts a new option --maxagents. If multiple assemblies are run in separate processes, this value may be used to limit the number that are executed simultaneously in parallel.
925 * The console runner no longer accepts the --include and --exclude options. Instead, the new --where option provides a more general way to express which tests will be executed, such as --where "cat==Fast && Priority==High". See the docs for details of the syntax.
926 * The new --debug option causes NUnit to break in the debugger immediately before tests are run. This simplifies debugging, especially when the test is run in a separate process.
927
928##### Issues Resolved
929
930 *  41	Check for zeroes in Assert messages
931 * 254	Finalize XML format for test results
932 * 275	NUnitEqualityComparer fails to compare `IEquatable<T>` where second object is derived from T
933 * 304	Run test Assemblies in parallel
934 * 374	New syntax for selecting tests to be run
935 * 515	OSPlatform.IsMacOSX doesn't work
936 * 573	nunit-console hangs on Mac OS X after all tests have run
937 * 669	TeamCity service message should have assembly name as a part of test name.
938 * 689	The TeamCity service message "testFinished" should have an integer value in the "duration" attribute
939 * 713	Include command information in XML
940 * 719	We have no way to configure tests for several assemblies using NUnit project file and the common installation from msi file
941 * 735	Workers number in xml report file cannot be found
942 * 784	Build Portable Framework on Linux
943 * 790	Allow Extensions to provide data through an attribute
944 * 794	Make it easier to debug tests as well as NUnit itself
945 * 801	NUnit calls Dispose multiple times
946 * 814	Support nullable types with TestCase
947 * 818	Possible error in Merge Pull Request #797
948 * 821	Wrapped method results in loss of result information
949 * 822	Test for Debugger in NUnitTestAssemblyRunner probably should not be in CF build
950 * 824	Remove unused System.Reflection using statements
951 * 826	Randomizer uniqueness tests fail randomly!
952 * 828	Merge pull request #827 (issue 826)
953 * 830	Add ability to report test results synchronously to test runners
954 * 837	Enumerators not disposed when comparing IEnumerables
955 * 840	Add missing copyright notices
956 * 844	Pull Request #835 (Issue #814) does not build in CF
957 * 847	Add new --process:inprocess and --inprocess options
958 * 850	Test runner fails if test name contains invalid xml characters
959 * 851	'Exclude' console option is not working in NUnit Lite
960 * 853	Cannot run NUnit Console from another directory
961 * 860	Use CDATA section for message, stack-trace and output elements of XML
962 * 863	Eliminate core engine
963 * 865	Intermittent failures of StopWatchTests
964 * 869	Tests that use directory separator char to determine platform misreport Linux on MaxOSX
965 * 870	NUnit Console Runtime Environment misreports on MacOSX
966 * 874	Add .NET Core Framework
967 * 878	Cannot exclude MacOSX or XBox platforms when running on CF
968 * 892	Fixed test runner returning early when executing more than one test run.
969 * 894	Give nunit.engine and nunit.engine.api assemblies strong names
970 * 896	NUnit 3.0 console runner not placing test result xml in --work directory
971
972### NUnit 3.0.0 Beta 4 - August 25, 2015
973
974#### Framework
975
976 * A new RetryAttribute allows retrying of failing tests.
977 * New SupersetConstraint and Is.SupersetOf syntax complement SubsetConstraint.
978 * Tests skipped due to ExplicitAttribute are now reported as skipped.
979
980#### Engine
981
982 * We now use Cecil to examine assemblies prior to loading them.
983 * Extensions are no longer based on Mono.Addins but use our own extension framework.
984
985#### Issues Resolved
986
987 * 125 3rd-party dependencies should be downloaded on demand
988 * 283 What should we do when a user extension does something bad?
989 * 585 RetryAttribute
990 * 642 Restructure MSBuild script
991 * 649 Change how we zip packages
992 * 654 ReflectionOnlyLoad and ReflectionOnlyLoadFrom
993 * 664 Invalid "id" attribute in the report for case "test started"
994 * 685 In the some cases when tests cannot be started NUnit returns exit code "0"
995 * 728 Missing Assert.That overload
996 * 741 Explicit Tests get run when using --exclude
997 * 746 Framework should send events for all tests
998 * 747 NUnit should apply attributes even if test is non-runnable
999 * 749 Review Use of Mono.Addins for Engine Extensibility
1000 * 750 Include Explicit Tests in Test Results
1001 * 753 Feature request: Is.SupersetOf() assertion constraint
1002 * 755 TimeOut attribute doesn't work with TestCaseSource Attribute
1003 * 757 Implement some way to wait for execution to complete in ITestEngineRunner
1004 * 760 Packaging targets do not run on Linux
1005 * 766 Added overloads for True()/False() accepting booleans
1006 * 778 Build and build.cmd scripts invoke nuget.exe improperly
1007 * 780 Teamcity fix
1008 * 782 No sources for 2.6.4
1009
1010### NUnit 3.0.0 Beta 3 - July 15, 2015
1011
1012#### Framework
1013
1014 * The RangeAttribute has been extended to support more data types including
1015   uint, long and ulong
1016 * Added platform support for Windows 10 and fixed issues with Windows 8 and
1017   8.1 support
1018 * Added async support to the portable version of NUnit Framework
1019 * The named members of the TestCaseSource and ValueSource attributes must now be
1020   static.
1021 * RandomAttribute has been extended to add support for new data types including
1022   uint, long, ulong, short, ushort, float, byte and sbyte
1023 * TestContext.Random has also been extended to add support for new data types including
1024   uint, long, ulong, short, ushort, float, byte, sbyte and decimal
1025 * Removed the dependency on Microsoft.Bcl.Async from the NUnit Framework assembly
1026   targeting .NET 4.0. If you want to write async tests in .NET 4.0, you will need
1027   to reference the NuGet package yourself.
1028 * Added a new TestFixtureSource attribute which is the equivalent to TestCaseSource
1029   but provides for instantiation of fixtures.
1030 * Significant improvements have been made in how NUnit deduces the type arguments of
1031   generic methods based on the arguments provided.
1032
1033#### Engine
1034
1035 * If the target framework is not specified, test assemblies that are compiled
1036   to target .NET 4.5 will no longer run in .NET 4.0 compatibility mode
1037
1038#### Console
1039
1040 * If the console is run without arguments, it will now display help
1041
1042#### Issues Resolved
1043
1044 *  47 Extensions to RangeAttribute
1045 * 237 System.Uri .ctor works not properly under Nunit
1046 * 244 NUnit should properly distinguish between .NET 4.0 and 4.5
1047 * 310 Target framework not specified on the AppDomain when running against .Net 4.5
1048 * 321 Rationalize how we count tests
1049 * 472 Overflow exception and DivideByZero exception from the RangeAttribute
1050 * 524 int and char do not compare correctly?
1051 * 539 Truncation of string arguments
1052 * 544 AsyncTestMethodTests for 4.5 Framework fails frequently on Travis CI
1053 * 656 Unused parameter in Console.WriteLine found
1054 * 670 Failing Tests in TeamCity Build
1055 * 673 Ensure proper disposal of engine objects
1056 * 674 Engine does not release test assemblies
1057 * 679 Windows 10 Support
1058 * 682 Add Async Support to Portable Framework
1059 * 683 Make FrameworkController available in portable build
1060 * 687 TestAgency does not launch agent process correctly if runtime type is not specified (i.e. v4.0)
1061 * 692 PlatformAttribute_OperatingSystemBitNess fails when running in 32-bit process
1062 * 693 Generic `Test<T>` Method cannot determine type arguments for fixture when passed as `IEnumerable<T>`
1063 * 698 Require TestCaseSource and ValueSource named members to be static
1064 * 703 TeamCity non-equal flowid for 'testStarted' and 'testFinished' messages
1065 * 712 Extensions to RandomAttribute
1066 * 715 Provide a data source attribute at TestFixture Level
1067 * 718 RangeConstraint gives error with from and two args of differing types
1068 * 723 Does nunit.nuspec require dependency on Microsoft.Bcl.Async?
1069 * 724 Adds support for `Nullable<bool>` to Assert.IsTrue and Assert.IsFalse
1070 * 734 Console without parameters doesn't show help
1071
1072### NUnit 3.0.0 Beta 2 - May 12, 2015
1073
1074####Framework
1075
1076 * The Compact Framework version of the framework is now packaged separately
1077   and will be distributed as a ZIP file and as a NuGet package.
1078 * The NUnit 2.x RepeatAttribute was added back into the framework.
1079 * Added Throws.ArgumentNullException
1080 * Added GetString methods to NUnit.Framework.Internal.RandomGenerator to
1081   create repeatable random strings for testing
1082 * When checking the equality of DateTimeOffset, you can now use the
1083   WithSameOffset modifier
1084 * Some classes intended for internal usage that were public for testing
1085   have now been made internal. Additional classes will be made internal
1086   for the final 3.0 release.
1087
1088#### Engine
1089
1090 * Added a core engine which is a non-extensible, minimal engine for use by
1091   devices and similar situations where reduced functionality is compensated
1092   for by reduced size and simplicity of usage. See
1093   https://github.com/nunit/dev/wiki/Core-Engine for more information.
1094
1095#### Issues Resolved
1096
1097 *  22  Add OSArchitecture Attribute to Environment node in result xml
1098 *  24  Assert on Dictionary Content
1099 *  48  Explicit seems to conflict with Ignore
1100 * 168  Create NUnit 3.0 documentation
1101 * 196  Compare DateTimeOffsets including the offset in the comparison
1102 * 217  New icon for the 3.0 release
1103 * 316  NUnitLite TextUI Runner
1104 * 320	No Tests found: Using parametrized Fixture and TestCaseSource
1105 * 360  Better exception message when using non-BCL class in property
1106 * 454  Rare registry configurations may cause NUnit to fail
1107 * 478  RepeatAttribute
1108 * 481  Testing multiple assemblies in nunitlite
1109 * 538  Potential bug using TestContext in constructors
1110 * 546  Enable Parallel in NUnitLite/CF (or more) builds
1111 * 551  TextRunner not passing the NumWorkers option to the ITestAssemblyRunner
1112 * 556  Executed tests should always return a non-zero duration
1113 * 559  Fix text of NuGet packages
1114 * 560  Fix PackageVersion property on wix install projects
1115 * 562  Program.cs in NUnitLite NuGet package is incorrect
1116 * 564  NUnitLite Nuget package is Beta 1a, Framework is Beta 1
1117 * 565  NUnitLite Nuget package adds Program.cs to a VB Project
1118 * 568  Isolate packaging from building
1119 * 570  ThrowsConstraint failure message should include stack trace of actual exception
1120 * 576  Throws.ArgumentNullException would be nice
1121 * 577  Documentation on some members of Throws falsely claims that they return `TargetInvocationException` constraints
1122 * 579  No documentation for recommended usage of TestCaseSourceAttribute
1123 * 580  TeamCity Service Message Uses Incorrect Test Name with NUnit2Driver
1124 * 582  Test Ids Are Not Unique
1125 * 583  TeamCity service messages to support parallel test execution
1126 * 584  Non-runnable assembly has incorrect ResultState
1127 * 609  Add support for integration with TeamCity
1128 * 611  Remove unused --teamcity option from CF build of NUnitLite
1129 * 612  MaxTime doesn't work when used for TestCase
1130 * 621  Core Engine
1131 * 622  nunit-console fails when use --output
1132 * 628  Modify IService interface and simplify ServiceContext
1133 * 631  Separate packaging for the compact framework
1134 * 646  ConfigurationManager.AppSettings Params Return Null under Beta 1
1135 * 648  Passing 2 or more test assemblies targeting > .NET 2.0 to nunit-console fails
1136
1137### NUnit 3.0.0 Beta 1 - March 25, 2015
1138
1139#### General
1140
1141 * There is now a master windows installer for the framework, engine and console runner.
1142
1143#### Framework
1144
1145 * We no longer create a separate framework build for .NET 3.5. The 2.0 and
1146   3.5 builds were essentially the same, so the former should now be used
1147   under both runtimes.
1148 * A new Constraint, DictionaryContainsKeyConstraint, may be used to test
1149   that a specified key is present in a dictionary.
1150 * LevelOfParallelizationAttribute has been renamed to LevelOfParallelismAttribute.
1151 * The Silverlight runner now displays output in color and includes any
1152   text output created by the tests.
1153 * The class and method names of each test are included in the output xml
1154   where applicable.
1155 * String arguments used in test case names are now truncated to 40 rather
1156   than 20 characters.
1157
1158#### Engine
1159
1160 * The engine API has now been finalized. It permits specifying a minimum
1161   version of the engine that a runner is able to use. The best installed
1162   version of the engine will be loaded. Third-party runners may override
1163   the selection process by including a copy of the engine in their
1164   installation directory and specifying that it must be used.
1165 * The V2 framework driver now uses the event listener and test listener
1166   passed to it by the runner. This corrects several outstanding issues
1167   caused by events not being received and allows selecting V2 tests to
1168   be run from the command-line, in the same way that V3 tests are selected.
1169
1170#### Console
1171
1172 * The console now defaults to not using shadowcopy. There is a new option --shadowcopy to turn it on if needed.
1173
1174#### Issues Resolved
1175
1176 * 224	Silverlight Support
1177 * 318	TestActionAttribute: Retrieving the TestFixture
1178 * 428	Add ExpectedExceptionAttribute to C# samples
1179 * 440	Automatic selection of Test Engine to use
1180 * 450	Create master install that includes the framework, engine and console installs
1181 * 477	Assert does not work with ArraySegment
1182 * 482	nunit-console has multiple errors related to -framework option
1183 * 483	Adds constraint for asserting that a dictionary contains a particular key
1184 * 484	Missing file in NUnit.Console nuget package
1185 * 485	Can't run v2 tests with nunit-console 3.0
1186 * 487	NUnitLite can't load assemblies by their file name
1187 * 488	Async setup and teardown still don't work
1188 * 497	Framework installer shold register the portable framework
1189 * 504	Option --workers:0 is ignored
1190 * 508	Travis builds with failure in engine tests show as successful
1191 * 509	Under linux, not all mono profiles are listed as available
1192 * 512	Drop the .NET 3.5 build
1193 * 517	V2 FrameworkDriver does not make use of passed in TestEventListener
1194 * 523	Provide an option to disable shadowcopy in NUnit v3
1195 * 528	V2 FrameworkDriver does not make use of passed in TestFilter
1196 * 530	Color display for Silverlight runner
1197 * 531	Display text output from tests in Silverlight runner
1198 * 534	Add classname and methodname to test result xml
1199 * 541	Console help doesn't indicate defaults
1200
1201### NUnit 3.0.0 Alpha 5 - January 30, 2015
1202
1203#### General
1204
1205 * A Windows installer is now included in the release packages.
1206
1207#### Framework
1208
1209 * 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.
1210 * TestFixture and TestCase attributes now enforce the requirement that a reason needs to be provided when ignoring a test.
1211 * SetUp, TearDown, OneTimeSetUp and OneTimeTearDown methods may now be async.
1212 * String arguments over 20 characters in length are truncated when used as part of a test name.
1213
1214#### Engine
1215
1216 * 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:
1217   * A FrameworkDriver that allows running NUnit V2 tests under NUnit 3.0.
1218   * ProjectLoaders for NUnit and Visual Studio projects.
1219   * An OutputWriter that creates XML output in NUnit V2 format.
1220 * DomainUsage now defaults to Multiple if not specified by the runner
1221
1222#### Console
1223
1224 * New options supported:
1225   * testlist provides a list of tests to run in a file
1226   * stoponerror indicates that the run should terminate when any test fails.
1227
1228#### Issues Resolved
1229
1230 * 20 TestCaseAttribute needs Platform property.
1231 * 60 NUnit should support async setup, teardown, fixture setup and fixture teardown.
1232 * 257  TestCaseAttribute should not require parameters with default values to be specified.
1233 * 266  Pluggable framework drivers.
1234 * 368  Create addin model.
1235 * 369  Project loader addins
1236 * 370  OutputWriter addins
1237 * 403  Move ConsoleOptions.cs and Options.cs to Common and share...
1238 * 419  Create Windows Installer for NUnit.
1239 * 427  [TestFixture(Ignore=true)] should not be allowed.
1240 * 437  Errors in tests under Linux due to hard-coded paths.
1241 * 441  NUnit-Console should support --testlist option
1242 * 442  Add --stoponerror option back to nunit-console.
1243 * 456  Fix memory leak in RuntimeFramework.
1244 * 459  Remove the Mixed Platforms build configuration.
1245 * 468  Change default domain usage to multiple.
1246 * 469  Truncate string arguments in test names in order to limit the length.
1247
1248### NUnit 3.0.0 Alpha 4 - December 30, 2014
1249
1250#### Framework
1251
1252 * ApartmentAttribute has been added, replacing STAAttribute and MTAAttribute.
1253 * Unnecessary overloads of Assert.That and Assume.That have been removed.
1254 * Multiple SetUpFixtures may be specified in a single namespace.
1255 * Improvements to the Pairwise strategy test case generation algorithm.
1256 * The new NUnitLite runner --testlist option, allows a list of tests to be kept in a file.
1257
1258#### Engine
1259
1260 * A driver is now included, which allows running NUnit 2.x tests under NUnit 3.0.
1261 * The engine can now load and run tests specified in a number of project formats:
1262   * NUnit (.nunit)
1263   * Visual Studio C# projects (.csproj)
1264   * Visual Studio F# projects (.vjsproj)
1265   * Visual Studio Visual Basic projects (.vbproj)
1266   * Visual Studio solutions (.sln)
1267   * Legacy C++ and Visual JScript projects (.csproj and .vjsproj) are also supported
1268   * Support for the current C++ format (.csxproj) is not yet available
1269 * Creation of output files like TestResult.xml in various formats is now a
1270   service of the engine, available to any runner.
1271
1272#### Console
1273
1274 * The command-line may now include any number of assemblies and/or supported projects.
1275
1276#### Issues Resolved
1277
1278 * 37	Multiple SetUpFixtures should be permitted on same namespace
1279 * 210	TestContext.WriteLine in an AppDomain causes an error
1280 * 227	Add support for VS projects and solutions
1281 * 231	Update C# samples to use NUnit 3.0
1282 * 233	Update F# samples to use NUnit 3.0
1283 * 234	Update C++ samples to use NUnit 3.0
1284 * 265	Reorganize console reports for nunit-console and nunitlite
1285 * 299	No full path to assembly in XML file under Compact Framework
1286 * 301	Command-line length
1287 * 363	Make Xml result output an engine service
1288 * 377	CombiningStrategyAttributes don't work correctly on generic methods
1289 * 388	Improvements to NUnitLite runner output
1290 * 390	Specify exactly what happens when a test times out
1291 * 396	ApartmentAttribute
1292 * 397	CF nunitlite runner assembly has the wrong name
1293 * 407	Assert.Pass() with ]]> in message crashes console runner
1294 * 414	Simplify Assert overloads
1295 * 416	NUnit 2.x Framework Driver
1296 * 417	Complete work on NUnit projects
1297 * 420	Create Settings file in proper location
1298
1299### NUnit 3.0.0 Alpha 3 - November 29, 2014
1300
1301#### Breaking Changes
1302
1303 * NUnitLite tests must reference both the nunit.framework and nunitlite assemblies.
1304
1305#### Framework
1306
1307 * The NUnit and NUnitLite frameworks have now been merged. There is no longer any distinction
1308   between them in terms of features, although some features are not available on all platforms.
1309 * The release includes two new framework builds: compact framework 3.5 and portable. The portable
1310   library is compatible with .NET 4.5, Silverlight 5.0, Windows 8, Windows Phone 8.1,
1311   Windows Phone Silverlight 8, Mono for Android and MonoTouch.
1312 * A number of previously unsupported features are available for the Compact Framework:
1313    - Generic methods as tests
1314    - RegexConstraint
1315    - TimeoutAttribute
1316    - FileAssert, DirectoryAssert and file-related constraints
1317
1318#### Engine
1319
1320 * The logic of runtime selection has now changed so that each assembly runs by default
1321   in a separate process using the runtime for which it was built.
1322 * On 64-bit systems, each test process is automatically created as 32-bit or 64-bit,
1323   depending on the platform specified for the test assembly.
1324
1325#### Console
1326
1327 * The console runner now runs tests in a separate process per assembly by default. They may
1328   still be run in process or in a single separate process by use of command-line options.
1329 * The console runner now starts in the highest version of the .NET runtime available, making
1330   it simpler to debug tests by specifying that they should run in-process on the command-line.
1331 * The -x86 command-line option is provided to force execution in a 32-bit process on a 64-bit system.
1332 * A writeability check is performed for each output result file before trying to run the tests.
1333 * The -teamcity option is now supported.
1334
1335#### Issues Resolved
1336
1337 * 12   Compact framework should support generic methods
1338 * 145  NUnit-console fails if test result message contains invalid xml characters
1339 * 155  Create utility classes for platform-specific code
1340 * 223  Common code for NUnitLite console runner and NUnit-Console
1341 * 225  Compact Framework Support
1342 * 238  Improvements to running 32 bit tests on a 64 bit system
1343 * 261  Add portable nunitlite build
1344 * 284  NUnitLite Unification
1345 * 293  CF does not have a CurrentDirectory
1346 * 306  Assure NUnit can write resultfile
1347 * 308  Early disposal of runners
1348 * 309  NUnit-Console should support incremental output under TeamCity
1349 * 325  Add RegexConstraint to compact framework build
1350 * 326  Add TimeoutAttribute to compact framework build
1351 * 327  Allow generic test methods in the compact framework
1352 * 328  Use .NET Stopwatch class for compact framework builds
1353 * 331  Alpha 2 CF does not build
1354 * 333  Add parallel execution to desktop builds of NUnitLite
1355 * 334  Include File-related constraints and syntax in NUnitLite builds
1356 * 335  Re-introduce 'Classic' NUnit syntax in NUnitLite
1357 * 336  Document use of separate obj directories per build in our projects
1358 * 337  Update Standard Defines page for .NET 3.0
1359 * 341  Move the NUnitLite runners to separate assemblies
1360 * 367  Refactor XML Escaping Tests
1361 * 372  CF Build TestAssemblyRunnerTests
1362 * 373  Minor CF Test Fixes
1363 * 378  Correct documentation for PairwiseAttribute
1364 * 386  Console Output Improvements
1365
1366### NUnit 3.0.0 Alpha 2 - November 2, 2014
1367
1368#### Breaking Changes
1369
1370 * The console runner no longer displays test results in the debugger.
1371 * The NUnitLite compact framework 2.0 build has been removed.
1372 * 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.
1373
1374#### General
1375
1376 * A separate solution has been created for Linux
1377 * We now have continuous integration builds under both Travis and Appveyor
1378 * The compact framework 3.5 build is now working and will be supported in future releases.
1379
1380#### New Features
1381
1382 * The console runner now automatically detects 32- versus 64-bit test assemblies.
1383 * The NUnitLite report output has been standardized to match that of nunit-console.
1384 * The NUnitLite command-line has been standardized to match that of nunit-console where they share the same options.
1385 * Both nunit-console and NUnitLite now display output in color.
1386 * ActionAttributes now allow specification of multiple targets on the attribute as designed. This didn't work in the first alpha.
1387 * OneTimeSetUp and OneTimeTearDown failures are now shown on the test report. Individual test failures after OneTimeSetUp failure are no longer shown.
1388 * 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.
1389
1390#### Issues Resolved
1391
1392 * 222	Color console for NUnitLite
1393 * 229	Timing failures in tests
1394 * 241	Remove reference to Microslft BCL packages
1395 * 243	Create solution for Linux
1396 * 245	Multiple targets on action attributes not implemented
1397 * 246	C++ tests do not compile in VS2013
1398 * 247	Eliminate trace display when running tests in debug
1399 * 255	Add new result states for more precision in where failures occur
1400 * 256	ContainsConstraint break when used with AndConstraint
1401 * 264	Stacktrace displays too many entries
1402 * 269	Add manifest to nunit-console and nunit-agent
1403 * 270	OneTimeSetUp failure results in too much output
1404 * 271	Invalid tests should be treated as errors
1405 * 274	Command line options should be case insensitive
1406 * 276	NUnit-console should not reference nunit.framework
1407 * 278	New result states (ChildFailure and SetupFailure) break NUnit2XmlOutputWriter
1408 * 282	Get tests for NUnit2XmlOutputWriter working
1409 * 288	Set up Appveyor CI build
1410 * 290	Stack trace still displays too many items
1411 * 315	NUnit 3.0 alpha: Cannot run in console on my assembly
1412 * 319	CI builds are not treating test failures as failures of the build
1413 * 322	Remove Stopwatch tests where they test the real .NET Stopwatch
1414
1415### NUnit 3.0.0 Alpha 1 - September 22, 2014
1416
1417#### Breaking Changes
1418
1419 * Legacy suites are no longer supported
1420 * Assert.NullOrEmpty is no longer supported (Use Is.Null.Or.Empty)
1421
1422#### General
1423
1424 * MsBuild is now used for the build rather than NAnt
1425 * The framework test harness has been removed now that nunit-console is at a point where it can run the tests.
1426
1427#### New Features
1428
1429 * Action Attributes have been added with the same features as in NUnit 2.6.3.
1430 * TestContext now has a method that allows writing to the XML output.
1431 * TestContext.CurrentContext.Result now provides the error message and stack trace during teardown.
1432 * Does prefix operator supplies several added constraints.
1433
1434#### Issues Resolved
1435
1436 * 6	Log4net not working with NUnit
1437 * 13	Standardize commandline options for nunitlite runner
1438 * 17	No allowance is currently made for nullable arguents in TestCase parameter conversions
1439 * 33	TestCaseSource cannot refer to a parameterized test fixture
1440 * 54	Store message and stack trace in TestContext for use in TearDown
1441 * 111	Implement Changes to File, Directory and Path Assertions
1442 * 112	Implement Action Attributes
1443 * 156	Accessing multiple AppDomains within unit tests result in SerializationException
1444 * 163	Add --trace option to NUnitLite
1445 * 167	Create interim documentation for the alpha release
1446 * 169	Design and implement distribution of NUnit packages
1447 * 171	Assert.That should work with any lambda returning bool
1448 * 175	Test Harness should return an error if any tests fail
1449 * 180	Errors in Linux CI build
1450 * 181	Replace NAnt with MsBuild / XBuild
1451 * 183	Standardize commandline options for test harness
1452 * 188	No output from NUnitLite when selected test is not found
1453 * 189	Add string operators to Does prefix
1454 * 193	TestWorkerTests.BusyExecutedIdleEventsCalledInSequence fails occasionally
1455 * 197	Deprecate or remove Assert.NullOrEmpty
1456 * 202	Eliminate legacy suites
1457 * 203	Combine framework, engine and console runner in a single solution and repository
1458 * 209	Make Ignore attribute's reason mandatory
1459 * 215	Running 32-bit tests on a 64-bit OS
1460 * 219	Teardown failures are not reported
1461
1462#### Console Issues Resolved (Old nunit-console project, now combined with nunit)
1463
1464 * 2	Failure in TestFixtureSetUp is not reported correctly
1465 * 5	CI Server for nunit-console
1466 * 6	System.NullReferenceException on start nunit-console-x86
1467 * 21	NUnitFrameworkDriverTests fail if not run from same directory
1468 * 24	'Debug' value for /trace option is deprecated in 2.6.3
1469 * 38	Confusing Excluded categories output
1470
1471### NUnit 2.9.7 - August 8, 2014
1472
1473#### Breaking Changes
1474
1475 * NUnit no longer supports void async test methods. You should use a Task return Type instead.
1476 * 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.
1477
1478#### New Features
1479
1480 * Parallel test execution is supported down to the Fixture level. Use ParallelizableAttribute to indicate types that may be run in parallel.
1481 * Async tests are supported for .NET 4.0 if the user has installed support for them.
1482 * A new FileExistsConstraint has been added along with FileAssert.Exists and FileAssert.DoesNotExist
1483 * ExpectedResult is now supported on simple (non-TestCase) tests.
1484 * The Ignore attribute now takes a named parameter Until, which allows specifying a date after which the test is no longer ignored.
1485 * The following new values are now recognized by PlatformAttribute: Win7, Win8, Win8.1, Win2012Server, Win2012ServerR2, NT6.1, NT6.2, 32-bit, 64-bit
1486 * TimeoutAttribute is now supported under Silverlight
1487 * ValuesAttribute may be used without any values on an enum or boolean argument. All possible values are used.
1488 * You may now specify a tolerance using Within when testing equality of DateTimeOffset values.
1489 * The XML output now includes a start and end time for each test.
1490
1491#### Issues Resolved
1492
1493 * 8	[SetUpFixture] is not working as expected
1494 * 14	CI Server for NUnit Framework
1495 * 21	Is.InRange Constraint Ambiguity
1496 * 27	Values attribute support for enum types
1497 * 29	Specifying a tolerance with "Within" doesn't work for DateTimeOffset data types
1498 * 31	Report start and end time of test execution
1499 * 36	Make RequiresThread, RequiresSTA, RequiresMTA inheritable
1500 * 45	Need of Enddate together with Ignore
1501 * 55	Incorrect XML comments for CollectionAssert.IsSubsetOf
1502 * 62	Matches(Constraint) does not work as expected
1503 * 63	Async support should handle Task return type without state machine
1504 * 64	AsyncStateMachineAttribute should only be checked by name
1505 * 65	Update NUnit Wiki to show the new location of samples
1506 * 66	Parallel Test Execution within test assemblies
1507 * 67	Allow Expected Result on simple tests
1508 * 70	EquivalentTo isn't compatible with IgnoreCase for dictioneries
1509 * 75	Async tests should be supported for projects that target .NET 4.0
1510 * 82	nunit-framework tests are timing out on Linux
1511 * 83	Path-related tests fail on Linux
1512 * 85	Culture-dependent NUnit tests fail on non-English machine
1513 * 88	TestCaseSourceAttribute documentation
1514 * 90	EquivalentTo isn't compatible with IgnoreCase for char
1515 * 100	Changes to Tolerance definitions
1516 * 110	Add new platforms to PlatformAttribute
1517 * 113	Remove ExpectedException
1518 * 118	Workarounds for missing InternalPreserveStackTrace in mono
1519 * 121	Test harness does not honor the --worker option when set to zero
1520 * 129	Standardize Timeout in the Silverlight build
1521 * 130	Add FileAssert.Exists and FileAssert.DoesNotExist
1522 * 132	Drop support for void async methods
1523 * 153	Surprising behavior of DelayedConstraint pollingInterval
1524 * 161	Update API to support stopping an ongoing test run
1525
1526NOTE: Bug Fixes below this point refer to the number of the bug in Launchpad.
1527
1528### NUnit 2.9.6 - October 4, 2013
1529
1530#### Main Features
1531
1532 * Separate projects for nunit-console and nunit.engine
1533 * New builds for .NET 4.5 and Silverlight
1534 * TestContext is now supported
1535 * External API is now stable; internal interfaces are separate from API
1536 * Tests may be run in parallel on separate threads
1537 * Solutions and projects now use VS2012 (except for Compact framework)
1538
1539#### Bug Fixes
1540
1541 * 463470 	We should encapsulate references to pre-2.0 collections
1542 * 498690 	Assert.That() doesn't like properties with scoped setters
1543 * 501784 	Theory tests do not work correctly when using null parameters
1544 * 531873 	Feature: Extraction of unit tests from NUnit test assembly and calling appropriate one
1545 * 611325 	Allow Teardown to detect if last test failed
1546 * 611938 	Generic Test Instances disappear
1547 * 655882 	Make CategoryAttribute inherited
1548 * 664081 	Add Server2008 R2 and Windows 7 to PlatformAttribute
1549 * 671432 	Upgrade NAnt to Latest Release
1550 * 676560 	Assert.AreEqual does not support `IEquatable<T>`
1551 * 691129 	Add Category parameter to TestFixture
1552 * 697069 	Feature request: dynamic location for TestResult.xml
1553 * 708173 	NUnit's logic for comparing arrays - use `Comparer<T[]>` if it is provided
1554 * 709062 	"System.ArgumentException : Cannot compare" when the element is a list
1555 * 712156 	Tests cannot use AppDomain.SetPrincipalPolicy
1556 * 719184 	Platformdependency in src/ClientUtilities/util/Services/DomainManager.cs:40
1557 * 719187 	Using Path.GetTempPath() causes conflicts in shared temporary folders
1558 * 735851 	Add detection of 3.0, 3.5 and 4.0 frameworks to PlatformAttribute
1559 * 736062 	Deadlock when EventListener performs a Trace call + EventPump synchronisation
1560 * 756843 	Failing assertion does not show non-linear tolerance mode
1561 * 766749 	net-2.0\nunit-console-x86.exe.config should have a `<startup/>` element and also enable loadFromRemoteSources
1562 * 770471 	Assert.IsEmpty does not support IEnumerable
1563 * 785460 	Add Category parameter to TestCaseSourceAttribute
1564 * 787106 	EqualConstraint provides inadequate failure information for IEnumerables
1565 * 792466 	TestContext MethodName
1566 * 794115 	HashSet incorrectly reported
1567 * 800089 	Assert.Throws() hides details of inner AssertionException
1568 * 848713 	Feature request: Add switch for console to break on any test case error
1569 * 878376 	Add 'Exactly(n)' to the NUnit constraint syntax
1570 * 882137 	When no tests are run, higher level suites display as Inconclusive
1571 * 882517 	NUnit 2.5.10 doesn't recognize TestFixture if there are only TestCaseSource inside
1572 * 885173 	Tests are still executed after cancellation by user
1573 * 885277 	Exception when project calls for a runtime using only 2 digits
1574 * 885604 	Feature request: Explicit named parameter to TestCaseAttribute
1575 * 890129 	DelayedConstraint doesn't appear to poll properties of objects
1576 * 892844 	Not using Mono 4.0 profile under Windows
1577 * 893919 	DelayedConstraint fails polling properties on references which are initially null
1578 * 896973 	Console output lines are run together under Linux
1579 * 897289 	Is.Empty constraint has unclear failure message
1580 * 898192 	Feature Request: Is.Negative, Is.Positive
1581 * 898256 	`IEnumerable<T>` for Datapoints doesn't work
1582 * 899178 	Wrong failure message for parameterized tests that expect exceptions
1583 * 904841 	After exiting for timeout the teardown method is not executed
1584 * 908829 	TestCase attribute does not play well with variadic test functions
1585 * 910218 	NUnit should add a trailing separator to the ApplicationBase
1586 * 920472 	CollectionAssert.IsNotEmpty must dispose Enumerator
1587 * 922455 	Add Support for Windows 8 and Windows 2012 Server to PlatformAttribute
1588 * 928246 	Use assembly.Location instead of assembly.CodeBase
1589 * 958766 	For development work under TeamCity, we need to support nunit2 formatted output under direct-runner
1590 * 1000181 	Parameterized TestFixture with System.Type as constructor arguments fails
1591 * 1000213 	Inconclusive message Not in report output
1592 * 1023084 	Add Enum support to RandomAttribute
1593 * 1028188 	Add Support for Silverlight
1594 * 1029785 	Test loaded from remote folder failed to run with exception System.IODirectory
1595 * 1037144 	Add MonoTouch support to PlatformAttribute
1596 * 1041365 	Add MaxOsX and Xbox support to platform attribute
1597 * 1057981 	C#5 async tests are not supported
1598 * 1060631 	Add .NET 4.5 build
1599 * 1064014 	Simple async tests should not return `Task<T>`
1600 * 1071164 	Support async methods in usage scenarios of Throws constraints
1601 * 1071343 	Runner.Load fails on CF if the test assembly contains a generic method
1602 * 1071861 	Error in Path Constraints
1603 * 1072379 	Report test execution time at a higher resolution
1604 * 1074568 	Assert/Assume should support an async method for the ActualValueDelegate
1605 * 1082330 	Better Exception if SetCulture attribute is applied multiple times
1606 * 1111834 	Expose Random Object as part of the test context
1607 * 1111838 	Include Random Seed in Test Report
1608 * 1172979 	Add Category Support to nunitlite Runner
1609 * 1203361 	Randomizer uniqueness tests sometimes fail
1610 * 1221712 	When non-existing test method is specified in -test, result is still "Tests run: 1, Passed: 1"
1611 * 1223294 	System.NullReferenceException thrown when ExpectedExceptionAttribute is used in a static class
1612 * 1225542 	Standardize commandline options for test harness
1613
1614#### Bug Fixes in 2.9.6 But Not Listed Here in the Release
1615
1616 * 541699	Silverlight Support
1617 * 1222148	/framework switch does not recognize net-4.5
1618 * 1228979	Theories with all test cases inconclusive are not reported as failures
1619
1620
1621### NUnit 2.9.5 - July 30, 2010
1622
1623#### Bug Fixes
1624
1625 * 483836 	Allow non-public test fixtures consistently
1626 * 487878 	Tests in generic class without proper TestFixture attribute should be invalid
1627 * 498656 	TestCase should show array values in GUI
1628 * 513989 	Is.Empty should work for directories
1629 * 519912 	Thread.CurrentPrincipal Set In TestFixtureSetUp Not Maintained Between Tests
1630 * 532488 	constraints from ConstraintExpression/ConstraintBuilder are not reusable
1631 * 590717 	categorie contains dash or trail spaces is not selectable
1632 * 590970 	static TestFixtureSetUp/TestFixtureTearDown methods in base classes are not run
1633 * 595683 	NUnit console runner fails to load assemblies
1634 * 600627 	Assertion message formatted poorly by PropertyConstraint
1635 * 601108 	Duplicate test using abstract test fixtures
1636 * 601645 	Parametered test should try to convert data type from source to parameter
1637 * 605432 	ToString not working properly for some properties
1638 * 606548 	Deprecate Directory Assert in 2.5 and remove it in 3.0
1639 * 608875 	NUnit Equality Comparer incorrectly defines equality for Dictionary objects
1640
1641### NUnit 2.9.4 - May 4, 2010
1642
1643#### Bug Fixes
1644
1645 * 419411 	Fixture With No Tests Shows as Non-Runnable
1646 * 459219 	Changes to thread princpal cause failures under .NET 4.0
1647 * 459224 	Culture test failure under .NET 4.0
1648 * 462019 	Line endings needs to be better controlled in source
1649 * 462418 	Assume.That() fails if I specify a message
1650 * 483845 	TestCase expected return value cannot be null
1651 * 488002 	Should not report tests in abstract class as invalid
1652 * 490679 	Category in TestCaseData clashes with Category on ParameterizedMethodSuite
1653 * 501352 	VS2010 projects have not been updated for new directory structure
1654 * 504018 	Automatic Values For Theory Test Parameters Not Provided For bool And enum
1655 * 505899 	'Description' parameter in both TestAttribute and TestCaseAttribute is not allowed
1656 * 523335 	TestFixtureTearDown in static class not executed
1657 * 556971 	Datapoint(s)Attribute should work on `IEnumerable<T>` as well as on Arrays
1658 * 561436 	SetCulture broken with 2.5.4
1659 * 563532 	DatapointsAttribute should be allowed on properties and methods
1660
1661###NUnit 2.9.3 - October 26, 2009
1662
1663#### Main Features
1664
1665 * Created new API for controlling framework
1666 * New builds for .Net 3.5 and 4.0, compact framework 3.5
1667 * Support for old style tests has been removed
1668 * New adhoc runner for testing the framework
1669
1670#### Bug Fixes
1671
1672 * 432805 	Some Framework Tests don't run on Linux
1673 * 440109 	Full Framework does not support "Contains"
1674
1675###NUnit 2.9.2 - September 19, 2009
1676
1677####Main Features
1678
1679 * NUnitLite code is now merged with NUnit
1680 * Added NUnitLite runner to the framework code
1681 * Added Compact framework builds
1682
1683####Bug Fixes
1684
1685 * 430100 	`Assert.Catch<T>` should return T
1686 * 432566 	NUnitLite shows empty string as argument
1687 * 432573 	Mono test should be at runtime
1688
1689###NUnit 2.9.1 - August 27, 2009
1690
1691####General
1692
1693 * Created a separate project for the framework and framework tests
1694 * Changed license to MIT / X11
1695 * Created Windows installer for the framework
1696
1697####Bug Fixes
1698
1699 * 400502 	NUnitEqualityComparer.StreamsE­qual fails for same stream
1700 * 400508 	TestCaseSource attirbute is not working when Type is given
1701 * 400510 	TestCaseData variable length ctor drops values
1702 * 417557 	Add SetUICultureAttribute from NUnit 2.5.2
1703 * 417559 	Add Ignore to TestFixture, TestCase and TestCaseData
1704 * 417560 	Merge Assert.Throws and Assert.Catch changes from NUnit 2.5.2
1705 * 417564 	TimeoutAttribute on Assembly
1706