FluentAssertions 2.1.0
A very extensive set of extension methods that allow you to more naturally specify the expected outcome of a TDD or
BDD-style unit test. Runs on .NET 3.5, 4.0 and 4.5 (Desktop and Windows Store), Silverlight 4 and 5 and Windows Phone 7.5 and 8. Supports the unit test frameworks NUnit, XUnit, MBUnit, Gallio and MSpec.
No packages depend on FluentAssertions.
What are the major features
* Added support for Windows Phone 8 test projects, both using the Visual Studio 2010 test harnass, as well as the new MSTest based framework introduced in Visual Studio 2012 Update 2 (#12470)
* Added support for AggregateExceptions in .NET 4.0 or newer so that aggregated exceptions are treated the same way as normal exceptions. This also allows you to use Should(Not)Throw() to assert a specific exception has occurred (or not), even if it is wrapped in an AggregateException (#12482).
* ShouldBeEquivalent() will attempt to report all differences rather than just the first one. It also supports nested dictionaries (#12472).
* By default the order of items in (nested) collections is ignored while asserting the equivalency of two object graphs. You can override this using the WithStrictOrder()/WithStrictOrderFor() options, with or without a specific path or predicate. Notice that for performance reasons, collections of bytes are still compared in exact order (#12484).
What other improvements are new
* Added support for asserting a method is decorated with a certain attribute (by Nathan Roe)
* Added BeWritable() to the property info assertions .
* XName support for all XML-related assertiosn (#12453 by Igor Khavkin)
* Added Should().BeApproximately() for decimal values.
* Added support for ShouldNotThrow() on Func<Task> so that you can verify that asynchronous functions threw a task (by Igor Khavkin)
* Ensured that all reference type assertions inherit from ReferenceTypeAssertions so that they all share some basic methods like (Not)BeNull.
* Added support for string.Should().NotStartWith() and string.Should().NotEndWith(). Also added the case-insensitive versions of them. (#12441)
* Allowed adding, removing and/or reordering the steps the EquivalencyValidator executes while comparing two object graphs for structural equality.
* By default, the exception message assertions are based on wildcards and case-insensitive. The ComparisonMode enum has been marked obsolete.
Bug fixes
* Added catching of FileLoadExceptions so AttributeBasedFormatter will not crash on certain circumstances.
* Made test framework detection based on assembly scanning case insensitive (#12483)
* Fixed a type-mismatch error when two nullable properties were compared using an AssertionRule.
* The method collection.ShouldBeEquivalent() ignored duplicates in the expectation.
* Applied a small improvement by Groostav to collection.HaveCount() because it was counting collections through LINQ Count() even though it has a normal Count property (#12469).
* Comparing a null collection with another null collection will now succeed (#12490)
* When a type was generic, FA wouldn't display its properties in assertion failures (#12492)
* On Mono, the AttributeBasedFormatter sometimes throws a NullReferenceException, but this has been fixed by Frank Ebersoll (#12487).
* During a structural equality check, FA would incorrectly decide to include protected properties in the comparison. This has been fixed now (#12486).
* FA chocked on properties overriden using the new keyword. Now it just tries to be smart about it and select the one which type matches the subject (#12481).
* When a floating point value representing NaN was compared with another approximate value, it didn't throw (#12479).
* Improved the details of any unexpected exceptions during the ShouldThrow() and ShouldNotThrow() methods (#12473).
* Collection.ShouldBeInAscendingOrder() wasn't reporting the correct index if an item appeared out-of-order (#12468).
Breaking changes
* Renamed the Execute.Verification property to Execute.Assertion and introduced an internal AssertionScope.
This package has no dependencies.
Version | Downloads | Last updated |
---|---|---|
8.2.0 | 10 | 03/20/2025 |
8.1.1 | 12 | 02/22/2025 |
8.1.0 | 17 | 02/22/2025 |
8.0.1 | 23 | 01/26/2025 |
8.0.0 | 24 | 01/17/2025 |
8.0.0-rc.2 | 19 | 01/07/2025 |
8.0.0-rc.1 | 20 | 01/10/2025 |
8.0.0-alpha.68 | 18 | 01/07/2025 |
8.0.0-alpha.1 | 26 | 12/04/2024 |
7.2.0 | 12 | 02/22/2025 |
7.1.0 | 22 | 01/23/2025 |
7.0.0 | 19 | 12/04/2024 |
7.0.0-alpha.6 | 28 | 12/04/2024 |
7.0.0-alpha.5 | 22 | 11/08/2024 |
7.0.0-alpha.4 | 33 | 06/05/2024 |
7.0.0-alpha.3 | 41 | 10/28/2023 |
7.0.0-alpha.2 | 40 | 10/19/2023 |
7.0.0-alpha.1 | 34 | 08/30/2023 |
6.12.2 | 23 | 11/09/2024 |
6.12.1 | 19 | 09/10/2024 |
6.12.0 | 33 | 08/30/2023 |
6.11.0 | 31 | 06/30/2023 |
6.10.0 | 35 | 02/18/2023 |
6.9.0 | 34 | 05/23/2023 |
6.8.0 | 44 | 11/09/2022 |
6.7.0 | 38 | 06/07/2022 |
6.6.0 | 37 | 02/08/2023 |
6.5.1 | 57 | 12/28/2022 |
6.5.0 | 49 | 11/19/2022 |
6.4.0 | 37 | 12/30/2022 |
6.3.0 | 43 | 07/19/2022 |
6.2.0 | 45 | 12/01/2021 |
6.1.0 | 44 | 02/24/2023 |
6.0.0 | 47 | 07/12/2022 |
6.0.0-beta0003 | 34 | 07/22/2023 |
6.0.0-beta0002 | 42 | 12/12/2022 |
6.0.0-beta0001 | 34 | 11/01/2022 |
6.0.0-alpha0002 | 41 | 12/02/2021 |
6.0.0-alpha0001 | 33 | 11/06/2022 |
5.10.3 | 46 | 11/22/2021 |
5.10.2 | 36 | 12/01/2021 |
5.10.0 | 63 | 11/22/2021 |
5.9.0 | 35 | 01/15/2023 |
5.8.0 | 46 | 07/25/2022 |
5.7.0 | 50 | 07/02/2022 |
5.6.0 | 37 | 11/22/2021 |
5.5.3 | 38 | 11/22/2021 |
5.5.1 | 35 | 01/25/2023 |
5.4.2 | 32 | 07/20/2023 |
5.4.1 | 40 | 11/07/2022 |
5.4.0 | 44 | 12/02/2021 |
5.3.2 | 35 | 07/09/2023 |
5.3.0 | 38 | 08/24/2022 |
5.2.0 | 31 | 12/20/2022 |
5.1.2 | 41 | 12/04/2021 |
5.1.1 | 33 | 12/01/2021 |
5.0.0 | 50 | 11/22/2021 |
4.19.4 | 44 | 11/22/2021 |
4.19.3 | 40 | 10/26/2022 |
4.19.2 | 36 | 07/17/2023 |
4.19.0 | 36 | 07/20/2023 |
4.18.0 | 36 | 06/10/2023 |
4.17.0 | 36 | 12/03/2021 |
4.16.0 | 32 | 05/22/2023 |
4.15.0 | 37 | 12/02/2021 |
4.14.0 | 37 | 10/25/2022 |
4.13.1 | 31 | 07/19/2023 |
4.13.0 | 43 | 12/02/2021 |
4.12.0 | 39 | 05/05/2023 |
4.11.0 | 43 | 11/22/2021 |
4.10.0 | 39 | 01/18/2023 |
4.9.1 | 38 | 11/22/2021 |
4.9.0 | 78 | 06/23/2022 |
4.8.0 | 40 | 11/22/2021 |
4.7.0 | 43 | 10/15/2022 |
4.6.3 | 40 | 11/05/2022 |
4.6.2 | 34 | 05/18/2023 |
4.6.1 | 42 | 11/22/2021 |
4.5.0 | 37 | 05/14/2023 |
4.4.0 | 42 | 05/14/2023 |
4.3.2 | 39 | 11/22/2021 |
4.3.1 | 36 | 09/05/2022 |
4.3.0 | 39 | 07/26/2022 |
4.2.2 | 32 | 11/07/2022 |
4.2.1 | 37 | 10/30/2022 |
4.2.0 | 42 | 11/22/2021 |
4.1.1 | 41 | 06/24/2022 |
4.1.0 | 42 | 11/22/2021 |
4.0.1 | 39 | 11/22/2021 |
4.0.0 | 41 | 11/15/2022 |
4.0.0-beta0001 | 61 | 11/22/2021 |
3.5.0 | 44 | 07/22/2022 |
3.4.1 | 36 | 12/01/2021 |
3.4.0 | 47 | 09/03/2022 |
3.3.0 | 42 | 09/18/2022 |
3.2.2 | 36 | 08/20/2022 |
3.2.1 | 33 | 11/22/2021 |
3.1.229 | 34 | 07/14/2023 |
3.0.107 | 31 | 11/15/2022 |
2.2.0 | 39 | 11/22/2021 |
2.1.0 | 37 | 07/24/2023 |
2.0.1 | 41 | 11/12/2022 |
2.0.0.1 | 33 | 11/17/2022 |
1.7.1.1 | 56 | 12/01/2021 |
1.7.0 | 41 | 06/27/2022 |
1.6.0 | 43 | 11/17/2022 |
1.5.0 | 40 | 11/22/2021 |
1.4.0 | 36 | 07/23/2023 |
1.3.0.1 | 33 | 11/22/2021 |