If you’re a fun of writing tests in fluent style, you should definitely include FluentAssertions into your .Net test framework.

Install FluentAssertions

Installation is easy and fast, the simplest way is to use Package Manager Console in Visual Studio.

 dotnet add <PROJECT_NAME> package -v <VERSION> FluentAssertions

So if you have project named my_project and want to add version 5.6.0, command will look like:

 dotnet add my_project package -v 5.6.0 FluentAssertions

Proper version of package should be downloaded and added to your Dependencies\NuGet list for selected project.

Make your assertions fluent

Now, just include FluentAssertions in your .cs file

using FluentAssertions;

and replace standard nUnit Asserts with FluentAssertions

bool beFluent = false;

// standard nUnit assertion
Assert.IsTrue(beFluent);

// fluent
beFluent.Should().BeTrue();    

When the code above is executed, output is

Expected beFluent to be true, but found False.

If you need include explanation, business justification or just more information for expected result to help you during failure analysis,
there is an optional string parameter ‘because’

bool beFluent = false;
beFluent.Should().BeTrue("it is more readable");

will fail with message

Expected beFluent to be true because it is more readable, but found False.

FluentAssertions provide many more useful methods for many types

Comparing numbers

int theInt = 5;

theInt.Should().Be(5);
theInt.Should().BeGreaterOrEqualTo(5);
theInt.Should().BeOneOf(new List<int>() {1, 2, 3, 4, 5});
theInt.Should().BePositive();
theInt.Should().BeInRange(0, 20);

Comparing strings

string address = "https://qa-services.dev";

address.Should().Contain("qa");
address.Should().BeEmpty();
address.Should().MatchRegex("^\\w

quot;);
address.Should().NotBeNullOrEmpty();
address.Should().NotBe("http://qa-services.dev");
address.Should().StartWith("https");

Comparing Dates

Fluent Assertions provides extensions for handling dates in readable and convenient format

using FluentAssertions.Extensions;

which allows to use

DateTime birthday = 8.April(1985);

birthday.Should().NotBe(7.April(1985));
birthday.Should().HaveYear(1985);
birthday.Should().NotBeCloseTo(31.December(1985), TimeSpan.FromDays(30));

DateTime.Now.Should().BeAfter(birthday);

Comparing Collections

IEnumerable collection = new[] { 1, 2, 5, 8 };
collection.Should().NotBeEmpty()
    .And.HaveCount(4)
    .And.ContainInOrder(new[] { 2, 5 })
    .And.ContainItemsAssignableTo<int>();

Explore more

Find full documentation on official website.