NFluent 2.7.2

.NET Standard 1.3 .NET Framework 2.0
There is a newer version of this package available.
See the version list below for details.
dotnet add package NFluent --version 2.7.2
NuGet\Install-Package NFluent -Version 2.7.2
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="NFluent" Version="2.7.2" />
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add NFluent --version 2.7.2
#r "nuget: NFluent, 2.7.2"
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
// Install NFluent as a Cake Addin
#addin nuget:?package=NFluent&version=2.7.2

// Install NFluent as a Cake Tool
#tool nuget:?package=NFluent&version=2.7.2

V 2.7.2

This version brings a couple of bug fixes.


  • IsZero failed for very small double (<1E-28) in previous versions.

  • IsEquivalentTo was not permissive enougth for dictionaries.

GitHub Issues

  • #331, #333
Product Compatible and additional computed target framework versions.
.NET net5.0 was computed.  net5.0-windows was computed.  net6.0 was computed.  net6.0-android was computed.  net6.0-ios was computed.  net6.0-maccatalyst was computed.  net6.0-macos was computed.  net6.0-tvos was computed.  net6.0-windows was computed.  net7.0 was computed.  net7.0-android was computed.  net7.0-ios was computed.  net7.0-maccatalyst was computed.  net7.0-macos was computed.  net7.0-tvos was computed.  net7.0-windows was computed.  net8.0 was computed.  net8.0-android was computed.  net8.0-ios was computed.  net8.0-maccatalyst was computed.  net8.0-macos was computed.  net8.0-tvos was computed.  net8.0-windows was computed. 
.NET Core netcoreapp1.0 was computed.  netcoreapp1.1 was computed.  netcoreapp2.0 was computed.  netcoreapp2.1 was computed.  netcoreapp2.2 was computed.  netcoreapp3.0 was computed.  netcoreapp3.1 was computed. 
.NET Standard netstandard1.3 is compatible.  netstandard1.4 was computed.  netstandard1.5 was computed.  netstandard1.6 was computed.  netstandard2.0 is compatible.  netstandard2.1 was computed. 
.NET Framework net20 is compatible.  net30 is compatible.  net35 is compatible.  net40 is compatible.  net403 was computed.  net45 is compatible.  net451 was computed.  net452 was computed.  net46 was computed.  net461 was computed.  net462 was computed.  net463 was computed.  net47 was computed.  net471 was computed.  net472 was computed.  net48 was computed.  net481 was computed. 
MonoAndroid monoandroid was computed. 
MonoMac monomac was computed. 
MonoTouch monotouch was computed. 
Tizen tizen30 was computed.  tizen40 was computed.  tizen60 was computed. 
Universal Windows Platform uap was computed.  uap10.0 was computed. 
Xamarin.iOS xamarinios was computed. 
Xamarin.Mac xamarinmac was computed. 
Xamarin.TVOS xamarintvos was computed. 
Xamarin.WatchOS xamarinwatchos was computed. 
Compatible target framework(s)
Additional computed target framework(s)
Learn more about Target Frameworks and .NET Standard.

This package has no dependencies.

NuGet packages (9)

Showing the top 5 NuGet packages that depend on NFluent:

Package Downloads

NFluent checks for checking HttpResponseMessages.


Iago is a tool to write bdd like tests in kre. use `iago.runner` to execute your tests


A library for writing flexible and easy to maintain acceptance tests


multi dimension dictionary with expiration mechanism for cache invalidation


Iago runner is a tool to run bdd like tests in kre

GitHub repositories (15)

Showing the top 5 popular GitHub repositories that depend on NFluent:

Repository Stars
More than a ReClass port to the .NET platform.
WireMock.Net is a flexible product for stubbing and mocking web HTTP responses using advanced request matching and response templating. Based on the functionality from, but extended with more functionality.
The FileHelpers are a free and easy to use .NET library to read/write data from fixed length or delimited records in files, strings or streams
This repository was deprecated, use:
Entity Component System framework aiming for syntax and usage simplicity with maximum performance for game development.
Version Downloads Last updated 152 10/13/2023 35,025 6/9/2023 14,294 5/6/2023 8,952 3/3/2022 354 2/27/2022 372 2/27/2022 362 2/24/2022
2.8.0 400,500 2/4/2022
2.7.2 244,264 4/8/2021
2.7.1 89,111 12/29/2020
2.7.0 291,625 2/11/2020
2.6.0 197,791 8/19/2019
2.5.0 159,092 3/12/2019
2.4.0 112,729 10/2/2018
2.3.1 87,935 6/12/2018
2.3.0 1,926 6/9/2018
2.2.0 83,481 2/10/2018
2.1.1 27,363 1/5/2018
2.1.0 11,799 12/10/2017
2.0.0 63,160 6/27/2017
2.0.0-alpha-44 2,069 5/10/2017
1.3.1 222,294 7/28/2014
1.2.0 8,880 6/16/2014
1.1.0 4,867 2/14/2014
1.0.0 3,571 12/31/2013
0.11.0 1,992 11/26/2013
0.9.0 2,063 8/6/2013
0.8.0 1,914 7/6/2013
0.7.0 1,734 6/4/2013
0.6.0 1,684 5/19/2013
0.5.0 1,741 4/21/2013

# V 2.7.2

## Fixes

* HasFieldWithSameValues resulted in false positive when string fields had the same value.

* IsZero failed for very small double (<1E-28) in previous versions.

* IsEquivalentTo was not permissive enougth for dictionaries.

# GitHub Issues

* #331, #333

# V 2.7.1

# Fixes

* HasFieldsWithSameValues failed to properly compare when the expected value contained duplicate string.

More generally, instances where only checked once for equality; any subsequent check was assumed to be succesful.

This could lead to false positive (i.e. checks succeeded when it should have failed).

This regression was introduced by V 2.2.0 in 02/2018. Sorry about that.

# GitHub Issues

* #331

# V 2.7.0

# New checks

* You can use IsCloseTo on DateTime and DateTimeOffset to check if a given date is close to a reference one.

* You can provide your own equality comparer (as an implementation of IEqualityComparer) when using IsEqualTo.

Check.That(sut).IsEqualTo(expected, new MyEqualityComparer());

# Improvements

* Check.That(IEnumerable).IsEquivalent(...) now uses default logic for equality check.

* Significantly improved error messages for enumeration and dictionary equality comparison.

* Restore typed IsEqualTo check. It should ensure smoother experience with autocompletion logic. Non typed version

(using Object as a parameter) is still available.

* You can use WhichMember to perform checks on any member of an exception.

Check.ThatCode(() => {...}).Throws<ArgumentException>().

WhichMember( x=> x.ParamName).IsEqualTo(myArg);

# Fixes

* the Not operator no longer erases the custom message set using WithCustomMessage

* Check.That(IDictionary).IsEquivalent now fails as expected when the sut has entries that do not exist in the expected dictionary.

* IsEquivalent now performs deep equivalence. For example, it supports Dictionaries of Dictionaries

* NFluent now mimics Net implicit type conversion for numeric types so that IsEqualTo behaves as expected when implicit conversion required

* Enum properties are properly considered when using Considering.

* Enumeration of KeyValue pairs are no longer treated as dictionaries but as enumeration. This behavior was a hack

to support custom IDictionary<K,V> implementations. Detection logic has been improved so this is no longer necessary.

* Check.That(IEnumerable).IsInDescendingOrder no longer requires items to implement IComparable

# GitHub Issues

* #306, #312, #313, #314, #315, #317, #319, #320, #321

## V 2.6.0

### New feature

* NFluent now supports assumption through Assuming entry point. For example you express it as :Assume.That(sut).IsEqualTo(expected); in a nutshell

you type Assuming instead of Check. All checks are available. Note that actual support depends on the underlying testing framework. As of now

it is supported for NUnit and MsTest

* NFluent now supports DateTimeOffset type with the same gchecks than for DateTime. These checks fails

if the offsets are different. The IsSameUtcInstant cheks perform a comparison integrating the offset.

### New checks

* You can use WhoseSize() to check the size of an enumeration. It is used as an extension keyword, as in:


### Improvements

* When using the Equals method, NFluent now uses expected.Equals(actual) instead of actual.Equals(expected).

This should have limited impact.

* Actual and expected value naming has been redesigned to improve naming accuracy. Impact vary depending on checks and types.

* Comparison of enumeration now provides details regarding the differences. You can control

how many differences are reported using the property **ExtensionsCommonHelpers.CountOfLineOfDetails**.

* Cleaned up the reporting of array fields when using Considering. The superfluous dot (as in _field.[index]_)

has been removed.

* Improved implementation for Equals when using Considering. You should use IsEqualTo when checking for

* equality, but we also provide an implementation of Equals as a failsafe.

### Fixes

* Fix issue with IEnumerable<object> and Contains(Exactly), IsEqualTo, IsEquivalentTo.

* Several error messages have been improved due to fix on check helpers.

* NotSupportedException when using ContainsExactly on strings.

* Fix issue with single dimension arrays and field based checks where the LAST item of the array was not evaluated during the check (issue found thanks to mutation test)

* Comparing Array with considering was no different than when using IsEqualTo. This has been fixed.

Therefore error messages are now in line with what was expected

### Extensibility

Foreword: several breaking changes have been introduced that may trigger build error in your custom extensions if you have made any.

Methods and types have been renamed, so your code will have to refer the new names. IF YOU ENCOUNTER ISSUES AND NEED ASSISTANCE, please open an issue, we will assist you ASAP.

* All lambda/code specific interfaces (ICodeCheck<T>...) and classes have been removed. NFluent now uses the standard interfaces and types (i.e. Check<T>)

* ICheckLogic.DefineExpectedValues now expects an generic IEnumerable<T> instead of a plain IEnumerable

* you can use ICheckLogic.DefinePossibleTypes if you need to have a list of possible types for the sut (displayed in the error message)

* improved naming: ICheckLogic.DefineExpectedValues has been renamed DefinePossibleValues

* checks helper (ICheckLogic) now correctly reports the fundamental error instead of a detail error. In previous version, the error messages could focus on details, e.g. report the

exception's message when the issue is the exception's type.

* add a flag (boolean) to BuildCheckLinkWhich method (allows to provide subitem check) that allows to speciyf sub item is available.

### GitHub Issues

* #225, #291, #292, #295, #296, #297, #299, #302