|
2 | 2 | uid: frameworkreleasenotes |
3 | 3 | --- |
4 | 4 | <!-- markdownlint-disable-file MD013 --> |
| 5 | +<!-- markdownlint-disable-file MD033 --> |
5 | 6 |
|
6 | 7 | # Framework Release |
7 | 8 |
|
| 9 | +## NUnit 4.3.0 - Dec 15. 2024 |
| 10 | + |
| 11 | +This release includes a series of enhancements and bug fixes. Notably, some of the bug fixes address issues related to a lack of type safety in NUnit. See issues [4877](https://github.com/nunit/nunit/issues/4877), |
| 12 | +[4876](https://github.com/nunit/nunit/issues/4876), [4875](https://github.com/nunit/nunit/issues/4875), [4874](https://github.com/nunit/nunit/issues/4874) and [150](https://github.com/nunit/nunit/issues/150). |
| 13 | + |
| 14 | +Be aware that this might cause compile errors in cases where the code was previously ignored. These errors can be safely resolved by removing the affected code. |
| 15 | + |
| 16 | +There are 29 issues fixed in this release. |
| 17 | + |
| 18 | +### Enhancements |
| 19 | + |
| 20 | +* [4890](https://github.com/nunit/nunit/issues/4890) Add .net 8 as a target framework in the package. Thanks to NUnit Team member [Manfred Brands](https://github.com/manfred-brands) for [PR 4884](https://github.com/nunit/nunit/pull/4884) |
| 21 | +* [4886](https://github.com/nunit/nunit/issues/4886) Optimize ToArray()[0] with First() in TestAssert class in TestAssert.cs. Thanks to [Saurav-shres](https://github.com/Saurav-shres) for [PR 4888](https://github.com/nunit/nunit/pull/4888) |
| 22 | +* [4862](https://github.com/nunit/nunit/issues/4862) PropertiesComparer 32 Property Limit Error Message. Thanks to [Cincidial](https://github.com/Cincidial) for [PR 4870](https://github.com/nunit/nunit/pull/4870) |
| 23 | +* [4861](https://github.com/nunit/nunit/issues/4861) Always repeat Test x times. Thanks to [Christoph](https://github.com/cfuerbachersparks) for [PR 4864](https://github.com/nunit/nunit/pull/4864) |
| 24 | +* [4852](https://github.com/nunit/nunit/issues/4852) Expand the usability of `Contains.Key(...).WithValue(...)`. Thanks to [Michael Render](https://github.com/RenderMichael) for [PR 4854](https://github.com/nunit/nunit/pull/4854) |
| 25 | +* [4846](https://github.com/nunit/nunit/issues/4846) Add NET9 target for the framework tests. Thanks to [Leon Lux](https://github.com/Lachstec) for [PR 4851](https://github.com/nunit/nunit/pull/4851) |
| 26 | +* [4839](https://github.com/nunit/nunit/issues/4839) Allow to use collection expressions with collection constraints. Thanks to [Oleksandr Liakhevych](https://github.com/Dreamescaper) for [PR 4840](https://github.com/nunit/nunit/pull/4840) |
| 27 | +* [4832](https://github.com/nunit/nunit/issues/4832) Setting thread names to make debugging easier. Thanks to NUnit Team member [Terje Sandstrom](https://github.com/OsirisTerje) for [PR 4835](https://github.com/nunit/nunit/pull/4835) |
| 28 | +* [4811](https://github.com/nunit/nunit/issues/4811) Assert.ThatAsync does not support polling. Thanks to [Oleksandr Liakhevych](https://github.com/Dreamescaper) for [PR 4813](https://github.com/nunit/nunit/pull/4813) |
| 29 | +* [4771](https://github.com/nunit/nunit/issues/4771) Support tuples in inline data. Thanks to [MaxKot](https://github.com/MaxKot) for [PR 4772](https://github.com/nunit/nunit/pull/4772) |
| 30 | +* [2492](https://github.com/nunit/nunit/issues/2492) EqualConstraint.Using(StringComparer.*) causes overload ambiguity error. Thanks to NUnit Team member [Manfred Brands](https://github.com/manfred-brands) for [PR 4882](https://github.com/nunit/nunit/pull/4882) |
| 31 | + |
| 32 | +### Bug fixes |
| 33 | + |
| 34 | +* [4887](https://github.com/nunit/nunit/issues/4887) FileLoadException for NUnit 4.2.2 when upgrade the System.Buffers to 4.6.0. Thanks to NUnit Team member [Terje Sandstrom](https://github.com/OsirisTerje) for [PR 4891](https://github.com/nunit/nunit/pull/4891) |
| 35 | +* [4877](https://github.com/nunit/nunit/issues/4877) Fix EqualTo modifiers for DateTime. Thanks to NUnit Team member [Manfred Brands](https://github.com/manfred-brands) for [PR 4882](https://github.com/nunit/nunit/pull/4882) |
| 36 | +* [4876](https://github.com/nunit/nunit/issues/4876) Equal.Within Fails With Negative Tolerance. Thanks to [Raffael Botschen](https://github.com/RaffaelCH) for [PR 4881](https://github.com/nunit/nunit/pull/4881) |
| 37 | +* [4875](https://github.com/nunit/nunit/issues/4875) String constraints should not allow using Within. Thanks to NUnit Team member [Manfred Brands](https://github.com/manfred-brands) for [PR 4882](https://github.com/nunit/nunit/pull/4882) |
| 38 | +* [4874](https://github.com/nunit/nunit/issues/4874) IgnoreCase, Seconds and Minutes can be used on numerical constraints. Thanks to NUnit Team member [Manfred Brands](https://github.com/manfred-brands) for [PR 4882](https://github.com/nunit/nunit/pull/4882) |
| 39 | +* [4868](https://github.com/nunit/nunit/issues/4868) TestCase- and TestCaseSourceAttribute cannot handle generic test methods where method parameter is Nullable<T>. Thanks to NUnit Team member [Manfred Brands](https://github.com/manfred-brands) for [PR 4872](https://github.com/nunit/nunit/pull/4872) |
| 40 | +* [4836](https://github.com/nunit/nunit/issues/4836) PropertiesComparer doesn't work well with records. Thanks to [Oleksandr Liakhevych](https://github.com/Dreamescaper) for [PR 4837](https://github.com/nunit/nunit/pull/4837) |
| 41 | +* [4807](https://github.com/nunit/nunit/issues/4807) Is.EqualTo with empty ValueTuple throws System.NotSupportedException "Specified Tolerance not supported for instances of type 'System.ValueTuple' and 'System.ValueTuple'" after updating to NUnit 4.2.2. Thanks to NUnit Team member [Manfred Brands](https://github.com/manfred-brands) for [PR 4809](https://github.com/nunit/nunit/pull/4809) |
| 42 | +* [4281](https://github.com/nunit/nunit/issues/4281) Throws and Delayed (.After) Constraints do not cooperate, resulting in incorrectly failing test. Thanks to [Oleksandr Liakhevych](https://github.com/Dreamescaper) for [PR 4815](https://github.com/nunit/nunit/pull/4815) |
| 43 | +* [4110](https://github.com/nunit/nunit/issues/4110) Support running single-threaded async tests on Linux. Thanks to NUnit Team member [Manfred Brands](https://github.com/manfred-brands) for [PR 4883](https://github.com/nunit/nunit/pull/4883) |
| 44 | +* [3772](https://github.com/nunit/nunit/issues/3772) IsEquivalent on default ImmutableArray throws exception. Thanks to [Sergio L.](https://github.com/mr-sergito) for [PR 4850](https://github.com/nunit/nunit/pull/4850) |
| 45 | +* [3713](https://github.com/nunit/nunit/issues/3713) Description of --where=EXPRESSION missing from Notes section. Thanks to [rsjackson3](https://github.com/rsjackson3) for [PR 4817](https://github.com/nunit/nunit/pull/4817) |
| 46 | +* [150](https://github.com/nunit/nunit/issues/150) Improve inference of type arguments in generic test methods. Thanks to NUnit Team member [Steven Weerdenburg](https://github.com/stevenaw) for [PR 4873](https://github.com/nunit/nunit/pull/4873) |
| 47 | + |
| 48 | +### Refactorings |
| 49 | + |
| 50 | +None |
| 51 | + |
| 52 | +### Internal fixes |
| 53 | + |
| 54 | +* [4865](https://github.com/nunit/nunit/issues/4865) Increase Legacy NUnit so at least all methods are covered. Thanks to NUnit Team member [Manfred Brands](https://github.com/manfred-brands) for [PR 4871](https://github.com/nunit/nunit/pull/4871) |
| 55 | +* [4841](https://github.com/nunit/nunit/issues/4841) MacOS test failure. Thanks to NUnit Team member [Manfred Brands](https://github.com/manfred-brands) for [PR 4842](https://github.com/nunit/nunit/pull/4842) |
| 56 | +* [4819](https://github.com/nunit/nunit/issues/4819) Remove `StringUtil.Compare()` and update references in the tests. Thanks to [Sergio L.](https://github.com/mr-sergito) for [PR 4827](https://github.com/nunit/nunit/pull/4827) |
| 57 | +* [4798](https://github.com/nunit/nunit/issues/4798) Add a test to ensure direct framework dependencies in csproj are reflected in nuspec. Thanks to NUnit Team member [Terje Sandstrom](https://github.com/OsirisTerje) for [PR 4799](https://github.com/nunit/nunit/pull/4799) |
| 58 | + |
| 59 | +### Deprecated features |
| 60 | + |
| 61 | +None |
| 62 | + |
| 63 | +### Others |
| 64 | + |
| 65 | +### The following issues are marked as breaking changes |
| 66 | + |
| 67 | +None |
| 68 | + |
| 69 | +### Acknowledgements |
| 70 | + |
| 71 | +First and foremost, we want to recognize the exceptional contributions of team members [Manfred Brands](https://github.com/manfred-brands) and [Steven Weerdenburg](https://github.com/stevenaw) for their dedicated efforts on this release, particularly their work on improving type safety. |
| 72 | + |
| 73 | +We also express our heartfelt gratitude to everyone who has contributed to this release |
| 74 | +by reporting bugs, suggesting enhancements, and providing valuable feedback. |
| 75 | +Your efforts help make NUnit better for the entire community. |
| 76 | + |
| 77 | +A special thank you to the following reporters for identifying issues: |
| 78 | + |
| 79 | +<table> |
| 80 | +<tr> |
| 81 | +<td><a href="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/cfuerbachersparks">Christoph</a></td> |
| 82 | +<td><a href="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/KrzysFR">Christophe Chevalier</a></td> |
| 83 | +<td><a href="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/Cincidial">Cincidial</a></td> |
| 84 | +<td><a href="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/jnm2">Joseph Musser</a></td> |
| 85 | +</tr> |
| 86 | +<tr> |
| 87 | +<td><a href="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/Lachstec">Leon Lux</a></td> |
| 88 | +<td><a href="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/manfred-brands">Manfred Brands</a></td> |
| 89 | +<td><a href="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/MaxKot">MaxKot</a></td> |
| 90 | +<td><a href="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/MCMrARM">MCMrARM</a></td> |
| 91 | +</tr> |
| 92 | +<tr> |
| 93 | +<td><a href="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/RenderMichael">Michael Render</a></td> |
| 94 | +<td><a href="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/michaelamaura">Michaela Maura Elschner</a></td> |
| 95 | +<td><a href="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/mzh3511">mzh3511</a></td> |
| 96 | +<td><a href="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/Dreamescaper">Oleksandr Liakhevych</a></td> |
| 97 | +</tr> |
| 98 | +<tr> |
| 99 | +<td><a href="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/RaffaelCH">Raffael Botschen</a></td> |
| 100 | +<td><a href="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/biocoder-frodo">Sander</a></td> |
| 101 | +<td><a href="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/Saurav-shres">Saurav-shres</a></td> |
| 102 | +<td><a href="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/seesharks">seesharks</a></td> |
| 103 | +</tr> |
| 104 | +<tr> |
| 105 | +<td><a href="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/stevenaw">Steven Weerdenburg</a></td> |
| 106 | +<td><a href="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/OsirisTerje">Terje Sandstrom</a></td> |
| 107 | +<td><a href="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/wimvangool">Wim van Gool</a></td> |
| 108 | +</tr> |
| 109 | +</table> |
| 110 | + |
| 111 | +and to the commenters who engaged in discussions and offered further insights: |
| 112 | + |
| 113 | +<table> |
| 114 | +<tr> |
| 115 | +<td><a href="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/CharliePoole">CharliePoole</a></td> |
| 116 | +<td><a href="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/ChrisMaddock">Chris Maddock</a></td> |
| 117 | +<td><a href="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/cfuerbachersparks">Christoph</a></td> |
| 118 | +<td><a href="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/KrzysFR">Christophe Chevalier</a></td> |
| 119 | +</tr> |
| 120 | +<tr> |
| 121 | +<td><a href="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/Cincidial">Cincidial</a></td> |
| 122 | +<td><a href="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/Kooddammn">Harsh Jain</a></td> |
| 123 | +<td><a href="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/jnm2">Joseph Musser</a></td> |
| 124 | +<td><a href="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/Lachstec">Leon Lux</a></td> |
| 125 | +</tr> |
| 126 | +<tr> |
| 127 | +<td><a href="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/manfred-brands">Manfred Brands</a></td> |
| 128 | +<td><a href="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/MaxKot">MaxKot</a></td> |
| 129 | +<td><a href="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/RenderMichael">Michael Render</a></td> |
| 130 | +<td><a href="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/michaelamaura">Michaela Maura Elschner</a></td> |
| 131 | +</tr> |
| 132 | +<tr> |
| 133 | +<td><a href="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/mikkelbu">Mikkel Nylander Bundgaard</a></td> |
| 134 | +<td><a href="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/Dreamescaper">Oleksandr Liakhevych</a></td> |
| 135 | +<td><a href="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/PicNet">PicNet</a></td> |
| 136 | +<td><a href="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/RaffaelCH">Raffael Botschen</a></td> |
| 137 | +</tr> |
| 138 | +<tr> |
| 139 | +<td><a href="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/rprouse">Rob Prouse</a></td> |
| 140 | +<td><a href="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/rsjackson3">rsjackson3</a></td> |
| 141 | +<td><a href="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/sba-schleupen">Sascha Bartl</a></td> |
| 142 | +<td><a href="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/Saurav-shres">Saurav-shres</a></td> |
| 143 | +</tr> |
| 144 | +<tr> |
| 145 | +<td><a href="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/mr-sergito">Sergio L.</a></td> |
| 146 | +<td><a href="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/stevenaw">Steven Weerdenburg</a></td> |
| 147 | +<td><a href="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/OsirisTerje">Terje Sandstrom</a></td> |
| 148 | +<td><a href="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/wimvangool">Wim van Gool</a></td> |
| 149 | +</tr> |
| 150 | +</table> |
| 151 | + |
8 | 152 | ## NUnit 4.2.2 - August 31. 2024 |
9 | 153 |
|
10 | 154 | This hotfix addresses an issue with asynchronous behavior introduced in version 4.2.0. It resolves a regression bug that affected the release. |
|
0 commit comments