Swevo.AutoAssert
1.0.0
Prefix Reserved
See the version list below for details.
dotnet add package Swevo.AutoAssert --version 1.0.0
NuGet\Install-Package Swevo.AutoAssert -Version 1.0.0
<PackageReference Include="Swevo.AutoAssert" Version="1.0.0" />
<PackageVersion Include="Swevo.AutoAssert" Version="1.0.0" />
<PackageReference Include="Swevo.AutoAssert" />
paket add Swevo.AutoAssert --version 1.0.0
#r "nuget: Swevo.AutoAssert, 1.0.0"
#:package Swevo.AutoAssert@1.0.0
#addin nuget:?package=Swevo.AutoAssert&version=1.0.0
#tool nuget:?package=Swevo.AutoAssert&version=1.0.0
AutoAssert
Free, MIT-licensed fluent assertions for .NET. No commercial license required — ever.
Why AutoAssert?
Starting with v8, FluentAssertions requires a paid commercial license for use in commercial
projects (via its Xceed partnership). AutoAssert provides the same fluent Should() syntax
you already know, fully free and open source under MIT, for teams who don't want licensing
fees attached to their test suite.
using AutoAssert;
result.Should().Be(42);
name.Should().NotBeNullOrEmpty();
items.Should().HaveCount(3);
action.Should().Throw<InvalidOperationException>().WithMessage("boom");
Install
dotnet add package Swevo.AutoAssert
Supported assertions
| Type | Examples |
|---|---|
| Objects | Be, NotBe, BeNull, NotBeNull, BeSameAs, BeOfType<T>, BeAssignableTo<T>, Match |
| Strings | Be, Contain, StartWith, EndWith, BeNullOrEmpty, HaveLength, MatchRegex |
| Booleans | BeTrue, BeFalse |
| Numerics (int/long/short/byte/double/float/decimal) | Be, BeGreaterThan, BeLessThan, BeInRange, BeApproximately |
| Collections | HaveCount, Contain, BeEquivalentTo, Equal, ContainSingle, OnlyHaveUniqueItems, AllSatisfy |
| Exceptions | Throw<T>, ThrowAsync<T>, NotThrow, NotThrowAsync, WithMessage, WithInnerException<T> |
Every assertion accepts an optional because reasoning clause, matching the syntax you're
used to:
result.Should().Be(42, "the answer should always be 42");
Design goals
- MIT licensed, forever. No commercial tier, no per-seat fees.
- Zero reflection in the hot assertion path — plain equality/comparison checks.
- AOT-safe — works with Native AOT test hosts.
- Framework agnostic — throws a plain
AssertionFailedException, recognized as a failure by xUnit, NUnit, and MSTest alike. - Familiar syntax — migrating from FluentAssertions should mostly be a find-and-replace of
the
usingstatement for the assertion types covered above.
💼 Need .NET consulting?
I'm the author of AutoAssert and a suite of compile-time source generators (AutoWire, AutoMap.Generator) and 28+ Polly v8 resilience packages. I'm available for consulting on Polly v8 resilience, Azure cloud architecture, and clean .NET design.
→ solidqualitysolutions.com · LinkedIn
Also by the same author
🌐 Full suite overview: swevo.github.io
| Package | Description |
|---|---|
| AutoWire | Compile-time DI auto-registration — [Scoped]/[Singleton]/[Transient] generates IServiceCollection registration code. |
| AutoMap.Generator | Compile-time object mapping — [Map(typeof(Dto))] generates ToDto() extension methods. |
| AutoValidate.Generator | Compile-time FluentValidation wiring. |
| AutoResult.Generator | Compile-time Result<T> monad. |
| AutoDispatch.Generator | Compile-time CQRS dispatcher — free alternative to MediatR's commercial license. |
License
MIT © Justin Bannister
| Product | Versions 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 is compatible. net8.0-android was computed. net8.0-browser 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. net9.0 is compatible. net9.0-android was computed. net9.0-browser was computed. net9.0-ios was computed. net9.0-maccatalyst was computed. net9.0-macos was computed. net9.0-tvos was computed. net9.0-windows was computed. net10.0 was computed. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
| .NET Core | netcoreapp2.0 was computed. netcoreapp2.1 was computed. netcoreapp2.2 was computed. netcoreapp3.0 was computed. netcoreapp3.1 was computed. |
| .NET Standard | netstandard2.0 is compatible. netstandard2.1 was computed. |
| .NET Framework | 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 | tizen40 was computed. tizen60 was computed. |
| Xamarin.iOS | xamarinios was computed. |
| Xamarin.Mac | xamarinmac was computed. |
| Xamarin.TVOS | xamarintvos was computed. |
| Xamarin.WatchOS | xamarinwatchos was computed. |
-
.NETStandard 2.0
- No dependencies.
-
net8.0
- No dependencies.
-
net9.0
- No dependencies.
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.
1.0.0: Initial release. Object, string, numeric, boolean, collection, and exception assertions.