Provides additional assert capabilities for MS Test.

.NET, cadru, Core, .NETCore, dotnetcore, dotnet, dotnetstandard, utility, .NETStandard, mstest, testing, unit, tests, test, c-sharp, microsoft, portable
Install-Package Cadru.UnitTest.Framework -Version 4.0.0-preview2-144


Cadru Build status Join the chat at

What is Cadru?

Cadru is a collection of NuGet packages containing new APIs and extensions to the core .NET Framework to help complete your developer toolbox. It is designed to be cross-platform and the majority of the packages target .NET Standard 1.0.

What's in it?

Cadru is made up of the following assemblies:

  • Cadru.AspNetCore - Provides additional TagHelpers and View Location Expanders for ASP.NET Core.
  • Cadru.Collections - Provides additional collection classes and extensions.
  • Cadru.Contracts - Provides static classes for representing program contracts as preconditions in a way that's compatible with System.Diagnostics.Contracts.
  • Cadru.Core - Provides common extensions and new APIs for the .NET Framework.
  • Cadru.Core.Windows - A .NET Framework 4 targeted library meant for Windows desktop applications.
  • Cadru.Data - Provides a standard way to read Excel data.
  • Cadru.Data.Dapper - Provides a common database context and predicates for use with Dapper.
  • Cadru.IO - Provides additional input and output (I/O) types.
  • Cadru.Net - Provides transient error detection strategies for adding retry logic into your HttpClient calls and a UrlBuilder to help simplify building complex URLs.
  • Cadru.Net.NetworkInformation - Provides access to network information and notification of network status changes.
  • Cadru.Postal - Provides classes for generating email using ASP.NET MVC Razor views.
  • Cadru.TransientFaultHandling - Provides transient error detection strategies for adding retry logic into your application.
  • Cadru.UnitTest.Framework - Provides additional assert capabilities for MS Test.

How do I get Cadru?

I’ve tried to make it easy to get Cadru for your own use.

If you want the source code, you can fork the repository or just browse it on GitHub. You can also browse it on NuGet, or download an individual package directly.

Package Name
Cadru.AspNetCore NuGet downloads NuGet version
Cadru.Collections NuGet downloads NuGet version
Cadru.Contracts NuGet downloads NuGet version
Cadru.Core NuGet downloads NuGet version
Cadru.Core.Windows NuGet downloads NuGet version
Cadru.Data NuGet downloads NuGet version
Cadru.Data.Dapper NuGet downloads NuGet version
Cadru.IO NuGet downloads NuGet version
Cadru.Net NuGet downloads NuGet version
Cadru.Net.NetworkInformation NuGet downloads NuGet version
Cadru.Postal NuGet downloads NuGet version
Cadru.TransientFaultHandling NuGet downloads NuGet version
Cadru.UnitTest.Framework NuGet downloads NuGet version

Why another library?

Although Cadru was released as an open source framework in July 2013, some of the APIs it contains were created as early as 2003 and have been used in a variety of real world solutions. These are things that I kept having to rewrite in the apps I was building. Rather than continuing to rewrite them, I decided to encapsulate them in a library and make it broadly available. Although Cadru grew from app development, I have rewritten everything with a focus on being an API rather than a jumbled collection of utilities. That means everything is (hopefully) well documented, cleanly written, and easy to use.


Documentation is available as .chm files hosted in the GitHub repository.

There are also a lot of unit tests that show how to use the APIs which can be a good starting place as well. (My goal is to as be as close to 100% code coverage as possible. Obviously, that will always be a work in progress.)

The long-term goal is to put the documentation online somewhere (probably as wiki pages hosted in the repository), but I don't have a time frame for when that will be complete.

Bugs and feature requests

Do you have a bug or a feature request? Please use the issue tracker and search for existing and closed issues. If your problem or request isn't addressed yet, go ahead and open a new issue.


You can also get involved and fork the repository to submit your own pull requests. (More detailed contributor guidelines will be available soon.)


For transparency and to maintain backward compatibility (as much as possible), Cadru uses the Semantic Versioning guidelines.


Copyright and license

Code and documentation copyright 2001-2016 Scott Dorman. Code is licensed under the Microsoft Public License, use it as you wish (but please provide some credit somewhere in your app.) Documentation is released under Creative Commons.