Unit Testing Resources
Learn about the most common unit testing frameworks and related tools and where to find the most useful unit testing resources.
Introduction
The purpose of this section is to describe the .NET unit testing landscape and its resources. Fortunately, there is an abundance of testing frameworks and related tools from which to choose.
.NET unit testing frameworks
The design of the testing frameworks below is all based on xUnit and therefore the syntax and design of all three frameworks are similar. If you complete all the lessons in this course, switching from NUnit to any of the other two popular frameworks will be easy. The following are the most common unit testing frameworks in the .NET environment:
Unit testing framework | Description |
---|---|
NUnit | NUnit is a unit testing framework for all .NET languages. Initially ported from JUnit, the current production release, version 3, has been completely rewritten with many new features and support for a wide range of .NET platforms. |
xUnit.net | xUnit.net is a free, open-source, community-focused unit testing tool for the .NET Framework. Written by the original inventor of NUnit v2, xUnit is the latest technology for unit testing C#, F#, VB.NET, and other .NET languages. |
MSTest | MSTest is an open-source test framework that is shipped along with the Visual Studio IDE. |
.NET code coverage tools
There are various code coverage tools available. Unfortunately, the options for open-source code coverage tools are severely limited with the only open-source solution being AltCover. Although only AltCover was covered in this course, the principles of code coverage also apply to the other tools.
Code coverage tool | Description |
---|---|
dotCover | JetBrains’ dotCover is a .NET unit test runner and code coverage tool that integrates with Visual Studio and JetBrains Rider. |
NCover | NCover is one of the most popular .NET code coverage solutions. |
OpenCover | OpenCover is a code coverage tool for .NET 2 and above (Windows OSs only), with support for 32 and 64 processes and covers both branch and sequence points. The Mono framework is not supported. |
NCrunch | NCrunch is an automated testing extension for Visual Studio that eases the testing process with its code coverage tools. |
NDepend | NDepend conveniently identifies areas of code requiring more tests and provides quality visualizations of code coverage. |
AltCover | An open-source coverage tool for .NET (Framework 2.0+ and Core) and Mono which includes a set of related utilities for processing and displaying the results. |
.NET dependency injection containers
This is the list of all the available Dependency Injection frameworks/containers for the .NET platform:
Dependency injection container/framework | Description |
---|---|
Microsoft built-in dependency injection framework | The standard Microsoft dependency injection container is available by using the Microsoft.Extensions.DependencyInjection namespace. |
Autofac | Autofac is an Inversion of Control container for .NET Core, ASP.NET Core, .NET 4.5.1+, Universal Windows applications, and more. |
Castle Windsor | Castle Windsor is a quality and mature inversion of control container available for .NET and Silverlight. |
Ninject | Ninject helps you use the technique of dependency injection to break your applications into loosely coupled, highly cohesive components, and then glue them back together in a flexible manner. |
.NET mocking frameworks
In this course, we covered the Moq framework. The usage of other frameworks is very similar to Moq. Therefore, upskilling yourself in any of the other mocking frameworks is easy if you understand the Moq framework. The following are the most common mocking frameworks used in .NET:
Dependency injection container/framework | Description |
---|---|
Moq | Moq (pronounced “Mock-you” or just “Mock”) is the only mocking library for .NET developed from scratch to take full advantage of .NET Linq expression trees and lambda expressions. This makes it the most productive, type-safe, and refactoring-friendly mocking library available. |
NSubstitute | The NSubstitute mocking framework has a succinct syntax that other frameworks seem to lack. |
FakeItEasy | This is a .NET dynamic fake library for creating all types of fake objects, mocks, and stubs. |
JustMock | A fast and flexible complete mocking tool for crafting unit tests. |
Conclusion
Upon the completion of this lesson, you should have a firm grasp of the various testing frameworks and landscapes, as well as their relative advantages. This course provided practical experience in one framework from each set of testing, code coverage, dependency injection container, and mocking frameworks. Given that the principles within the four framework categories are the same, your knowledge in one framework is easily transferable to the others.
Get hands-on with 1400+ tech skills courses.