NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
NuGet · #1647 most downloaded on NuGet
A fork of FluentAssertions.
Last release 1 months ago
20 Aug 2026
Release timing varies
gaps range from 9 days to 5 months
Nearly every release is documented
notes for 16 of 16 stable releases
1 version withdrawn
withdrawn after publishing
127 years old
17 releases · first in 1900
Fix build due to vulnerabilities in System.Security.Cryptography.Xml by @lg2de in #548
Full Changelog: 9.5.0...9.6.0
One column per quarter.
AssertionScope.AddReportable to add custom reportable information to the current scope - #551AssertionChain.WithReportable overloads - #551ExcludingObsoleteMembers to SelfReferenceEquivalencyOptions allowing obsolete members to be ignored in structural comparison - #558
IEquivalencyOptions has been marked as "technically public" and not part of the public API.NotBeUpperCased and NotBeLowerCased for all lower-/uppercase strings - #591AssertionChain.AddReportable in favor of AssertionChain.WithReportable to get a more consistent fluent API for chaining - #551Add [Not]BeDecoratedWith for ParameterInfo by @cbersch in #449
GivenSelector<T>.FailWith() to match AssertionChain.FailWith() by @JakenVeina in #522Full Changelog: 9.4.0...9.5.0
[Not]BeDecoratedWith for ParameterInfo - #449AssertionChain.ForCondition() that allows for lazy execution of condition - #511AndWhichConstraint from IntersectWith - #495AndWhichConstraint from XElementAssertions.HaveAttribute - #504GivenSelector<T>.FailWith arguments only upon failure - #522Add option to configure the maximum of items when asserting collections by @lg2de in #412
Full Changelog: 9.3.0...9.4.0
EqualApproximately for collections of INumber<T> - #413[return: NotNull to all Should() and assertion methods - #433[NotNull] attribute on the Should() methods for nullable value types - #411StringSyntaxAttribute to the because parameter of several assertions - #404LifeCycle.InstancePerTestCase with Microsoft.Testing.Platform - #362AssertionScope - #393Add support for MSTest V4 by @lg2de in #315
Full Changelog: 9.2.1...9.3.0
ExcludingMembersNamed to BeEquivalentTo's options which enables excluding members with specified name - #317string null subject - #314Use new string diff visualization for StringStartStrategy and StringEndStrategy by @tbui17 in #225
Full Changelog: 9.2.0...9.2.1
StartWith and EndWith string assertions - #225Caution This version is not recommended due to the following issue: #309
Caution
This version is not recommended due to the following issue: #309
Full Changelog: 9.1.0...9.2.0
Contain to assert the occurrences - #238Add new string assertions: BeParsableInto<T> and NotBeParsableInto<T> by @ITaluone in #185
Full Changelog: 9.0.0...9.1.0
[Not]BeParsableInto - #185TypeSelectorAssertions failure messages - #200fix(deps): update dependency cspell to v9 by @renovate in #153
Full Changelog: 8.2.0...9.0.0
FluentAssertions to AwesomeAssertions and the assembly name to AwesomeAssertions.dll, see the Migration Guide for more details - #136Update 8.1.0 release notes in docs by @cbersch in #122
Full Changelog: 8.1.0...8.2.0
Full Changelog: 8.1.0...8.2.0
HaveProperty to TypeAssertions which only takes the property name - #142[CustomAssertions] attribute - #118That[DoNot]HaveAccessModifier method for filtering types - #143AssertionChain that assertion classes were initialized with - #138
DateTimeOffsetRangeAssertionsDateTimeRangeAssertionsExecutionTimeAssertionsMethodInfoSelectorAssertionsPropertyInfoSelectorAssertionsTaskCompletionSourceAssertionsAdd ForConstraint to GivenSelector allowing further chaining after .Then - #44
ForConstraint to GivenSelector<T> allowing further chaining after .Then - #44StringEqualityStrategy configurable - #100StringEqualityStrategy - #94Type formatting - #78AssertionChain that assertion classes were initialized with - #115
BooleanAssertionsDateOnlyAssertionsDateTimeAssertionsDateTimeOffsetAssertionsEnumAssertionsGuidAssertionsSimpleTimeSpanAssertionsTimeOnlyAssertionsTypeSelectorAssertionsAdd missing StringSyntaxAttribute to public method "because" parameter - #84
{} inside or as a Dictionary key - #24Task was treated as a failure in CompleteWithinAsync - b9cef9184BeEquivalentTo only gives one diff after a preceding successful assertion - #74Add Company and Product metadata to assembly #30
From this version on Awesome Assertions goes its own way.
NotBeIn to check if a DateTime is not in a given DateTimeKind - #2536Satisfy method available to all reference types to allow for nested assertions - #2597BeNaN and NotBeNaN for assertions on float and double - #2606IValueFormatters to a (nested) AssertionScope - #2676XElement - #2690
[Not]HaveElementWithValueNotHaveElement[Not]HaveAttributeNotHaveAttributeWithValueXDocument - #2690
[Not]HaveElementWithValueNotHaveElementEquivalencyOptions in string assertions - #2413
BeEquivalentTo on object graphs or collections.[CustomAssertionsAssembly] attribute - #2389Should() methods on reference types are now annotated with the [NotNull] attribute for a better Awesome Assertions experience when nullable reference types are enabled - #2380.Which construct will now amend the caller identifier - #2539MethodInfoFormatter and improved the PropertyInfoFormatter - #2539Excluding() / For().Exclude() and Including() on BeEquivalentTo() now also accepts an anonymous object to include/exclude multiple members at once - #2488BeEquivalentTo via ExcludingExplicitlyImplementedProperties - #2851RaisePropertyChangeFor to return a filtered list of events - #2677WithMapping was used in BeEquivalentTo - #2860WithStrictOrderingFor(x => x) with BeEquivalentTo - #2932DataSet, DataTable, DataRow and DataColumn into a new package FluentAssertions.DataSet - #2267...OrEqualTo methods - #2269
GenericCollectionAssertions
HaveCountGreaterOrEqualTo: Use HaveCountGreaterThanOrEqualToHaveCountLessOrEqualTo: Use HaveCountLessThanOrEqualToComparableTypeAssertions
BeGreaterOrEqualTo: Use BeGreaterThanOrEqualToBeLessOrEqualTo: Use BeLessThanOrEqualToSimpleTimeSpanAssertions
BeGreaterOrEqualTo: Use BeGreaterThanOrEqualToBeLessOrEqualTo: Use BeLessThanOrEqualToExecutionTimeAssertions
BeGreaterOrEqualTo: Use BeGreaterThanOrEqualToBeLessOrEqualTo: Use BeLessThanOrEqualToDefaultValueFormatter.SpacesPerIndentionLevel property which was added during the development of v6, but wasn't removed before the release of v6 - #2281AllSatisfy now succeeds when asserting that an empty collection satisfies some predicates - #2321OnlyContain now succeeds when asserting that an empty collection matches some predicates - #2350BinaryFormatter - #2278EquivalencyAssertionOptions to EquivalencyOptionsEquivalencyAssertionOptions<TExpectation> to EquivalencyOptions<TExpectation>IEquivalencyAssertionOptions to IEquivalencyOptionsSelfReferenceEquivalencyAssertionOptions<TSelf> to SelfReferenceEquivalencyOptions<TSelf>WithoutMatchingRules and WithoutSelectionRules while using BeEquivalentTo - #2457utcNow overload for .Monitor<T>() - #2629BeLowerCased/BeUpperCased have been changed to align with the behavior of ToLower/ToUpper - #2660HaveAttribute to HaveAttributeWithValue on XElement - #2690RespectingRuntimeTypes to PreferringRuntimeMemberTypes and RespectingDeclaredTypes to PreferringDeclaredMemberTypes - #2866ExcludingNestedObjects to WithoutRecursing to better describe its purpose - #2876HttpResponseMessage. Use FluentAssertions.Web instead. - #2909Configuration and Services into GlobalConfiguration accessible through AssertionEngine.Configuration and AssertionConfiguration.Current.Configuration - #2901app.config file - #2901ForConstraint to IAssertionsScope to support chaining .ForConstraint() after .Then - #2324AsyncFunctionAssertions into real base class - #2359
protected.GenericAsyncFunctionAssertions has been moved to NonGenericAsyncFunctionAssertions.NotThrow and NotThrowAfter from DelegateAssertions<TDelegate, TAssertions> to ActionAssertions - #2371EquivalencyValidator internal - #2854Add Company and Product metadata to assembly #30
Backport "Add [NotNull] attribute on the Should() method for object assertions" #2987
Backport "Improve failure message for string assertions when checking for equality" #2972
The expectation node identified as a cyclic reference is still compared to the subject node using simple equality - #2819
Your coding agent can read these notes before it upgrades. Set up the MCP server →