List of Automated Testing Frameworks for .NET related to methodologies and types of tests:
- Test-Driven Development (TDD)
- Behavior-Driven Development (BDD)
- Specification by Example (SBE)
- Acceptance Test-Driven Development (ATDD)
- Property-Based Testing (PBT)
- Unit / Integration / Acceptance / Specification / etc. Tests
Please feel free to suggest changes and/or new tools/frameworks.
Key:
- Bold — Most Popular / Recommended
- Unit Testing Frameworks
- Isolation Frameworks
- Acceptance Testing / Behavior-Driven Development / Specification by Example
- Web Application Testing
- Web Testing
- Cloud Testing
- User Interface Testing
- Database Testing
- Video Game Testing
- Concurrent Testing
- Memory Testing
- Mutation Testing
- Automated Exploratory Testing
- Property-Based Testing
- Approval Testing
- Code Coverage
- Continuous Testing
- Fluent Assertion Frameworks
- Test Data Builders and Dummy Data Generators
- Quantum Programming
- Helper Libraries
- Miscellaneous Tools
- Visual Studio Add-Ins
- References
What are unit test frameworks and how are they used? Simply stated, they are software tools to support writing and running unit tests, including a foundation on which to build tests and the functionality to execute the tests and report their results. They are not solely tools for testing; they can also be used as development tools on a par with preprocessors and debuggers. Unit test frameworks can contribute to almost every stage of software development, including software architecture and design, code implementation and debugging, performance optimization, and quality assurance. Paul Hamill, Unit Test Frameworks
Library | Comment |
---|---|
csUnit | Discontinued |
EMTF | - Discontinued - Known as Embeddable Micro Test Framework |
Expecto | F# |
FsUnit | F# |
Fuchu | F# / C# / VB.NET |
MbUnit | Discontinued |
MSTest | Also known as Microsoft Test Framework |
NUnit | |
NUnitLite | Discontinued |
Roaster | Discontinued |
TUnit | |
Unquote | F# |
xUnit.net |
An isolation framework is a set of programmable APIs that makes creating fake objects much simpler, faster, and shorter than hand-coding them. Automate Planet
Library | Comment |
---|---|
CleanMoq | One of the recommended fork of Moq |
FakeItEasy | |
Foq | F#, Discontinued |
JustMock | Non-free |
JustMock Lite | |
Microsoft Fakes | Previously known as Microsoft Moles |
Moq | Not recommended; read https://github.com/moq/moq/issues/1372 |
NMock | |
NSubstitute | |
NUnit.Mocks | Discontinued |
Rhino Mocks | Discontinued |
SimpleStubs | |
Typemock Isolator | Non-free |
Library | Comment |
---|---|
Harmony 2.0 | Runtime alter functionality by monkey patching methods |
Pose | Pose allows you to replace any .NET method (including static and non-virtual) with a delegate. It is similar to Microsoft Fakes but unlike it Pose is implemented entirely in managed code (Reflection Emit API). Everything occurs at runtime and in-memory, no unmanaged Profiling APIs and no file system pollution with re-written assemblies. |
Smocks | Smocks uses some magic under the hood to mock the normally unmockable. |
Library | Comment |
---|---|
ApprovalTests.Net | Discontinued |
Avignon | Discontinued |
BDDfy | |
BddPipe | |
BDTest | |
Concordion.NET | |
CoreBDD | |
Cucumber | |
Cuke4Nuke | Discontinued |
FitNesse | |
Gauge | |
HonestCode | Discontinued |
LightBDD | |
LoFuUnit | |
Machine.Specifications | Also known as MSpec |
NaturalSpec | Discontinued |
NBehave | Discontinued |
NDecision | Discontinued |
NScenario | |
NSpec | |
Ogooreck | |
Reqnroll | Open-source reboot of the SpecFlow project |
Robot Framework | |
Spec4Net | Discontinued |
SpecFlow | |
SpecsFor | |
Specter | Discontinued |
StoryQ | Discontinued |
StoryTeller | |
SubSpec | Discontinued |
System.Spec | Discontinued |
TickSpec | |
Verify | |
xBehave.net | Discontinued |
Xunit.Gherkin.Quick |
Testing web application UI e.g. via browser engine.
Library | Comment |
---|---|
Atata | |
Canopy | F# |
Coypu | |
FluentAutomation | Discontinued |
IeUnit | Discontinued |
Ivonna | Discontinued |
Netling | Load tests for web |
NUnitAsp | Discontinued |
Playwright for .NET | - Port of Playwright - Developed by Microsoft |
Puppeteer Sharp | - See also Puppeteer Sharp Contributions |
Ranorex | GUI testing for desktop, web and mobile applications |
Selenium | |
Squish GUI Tester | |
Test.Automation | |
TestComplete | |
TestLeft | |
TestStack.Seleno | |
WatiN | Discontinued |
Testing ASP.NET, HTTP, HttpClient, REST, Web Sockets, AMQP, Blazor etc.
Library | Comment |
---|---|
Alba | Utilities for ASP.Net Core web services testing |
bUnit | Blazor components testing |
DFrame | This library allows you to write distributed load test scenarios in plain C#, no needs weird gui, dsl, xml, json, yaml. In addition to HTTP/1, you can test HTTP/2, gRPC, MagicOnion, Photon, or original network transport by writing in C#. |
FakeHttpContext | Fake context for HttpContext.Current |
Flurl | URL builder and HTTP client library. |
HttpClient Interception | Simple library to provide stub responses in tests using HttpClient. |
Mock4Net | A fluent API allows to specify the behavior of the server and hence easily stub and mock webservices and REST resources |
MockHttp | Replacement for HttpMessageHandler |
MockNet | Friendly mocking framework to unit test the System.Net.Http namespace |
MockingBird | Discontinued |
My Tested ASP.NET | A fluent unit testing library for ASP.NET Core MVC |
NBomber | Load testing |
PactNet | - Port of Pact - Testing for integrating web apps, APIs and microservices |
Stubbery | API stubs |
WireMock.Net | HTTP response stubbing, matchable on URL/Path, headers, cookies and body content patterns |
Library | Comment |
---|---|
AWS .NET Mock Lambda Test Tool | |
Azure Functions Test Fixture | |
Azure Resource Manager Template Toolkit (arm-ttk) |
Testing system UI (Win32, WinForms, UWP, etc.), embedded, mobile apps
Library | Comment |
---|---|
Appium | Supports testing of Universal Windows Platform (UWP) and Classic Windows (Win32) applications |
Coded UI | Discontinued |
FlaUI | Automated UI testing of Windows applications (Win32, WinForms, WPF, Store Apps) |
NUnitForms | Discontinued |
Ranorex | GUI testing for desktop, web and mobile applications |
Scrutiny | F# and C# library for testing state machines by randomly choosing available states and valid transitions. Designed for usage with UI tests. |
Squish GUI Tester | All kinds of cross-platform desktop, mobile, embedded and web applications |
TestComplete | "Ensure the quality of your application without sacrificing speed or agility with an easy-to-use, GUI test automation tool. Our AI-powered object recognition engine and script or scriptless flexibility is unmatched, letting you test every desktop, web, and mobile application with ease." |
TestStack.White | Discontinued |
WinAppDriver | - Windows Application Driver - Service to support Selenium-like UI Test Automation on Windows Applications - Supports testing Universal Windows Platform (UWP), Windows Forms (WinForms), Windows Presentation Foundation (WPF), and Classic Windows (Win32) apps on Windows 10 PCs |
Library | Comment |
---|---|
DbUnit.NET | Discontinued |
NDbUnit | - Discontinued - Managing database state during unit testing |
Respawn | A small utility to help in resetting test databases to a clean state |
Library | Comment |
---|---|
GameDriver |
Library | Comment |
---|---|
FluentAssertions.Extensions | |
Microsoft CHESS | - Discontinued - "CHESS is a tool for finding and reproducing Heisenbugs in concurrent programs. CHESS repeatedly runs a concurrent test ensuring that every run takes a different interleaving. If an interleaving results in an error, CHESS can reproduce the interleaving for improved debugging. CHESS is available for both managed and native programs." |
Microsoft Coyote | |
Osherove.ThreadTester | Discontinued |
Typemock Racer | Discontinued |
Library | Comment |
---|---|
.NET Memory Profiler | Also known as MemProfiler |
dotMemory Unit |
Mutation testing (or mutation analysis or program mutation) is used to design new software tests and evaluate the quality of existing software tests. Mutation testing involves modifying a program in small ways. Each mutated version is called a mutant and tests detect and reject mutants by causing the behavior of the original version to differ from the mutant. This is called killing the mutant. Test suites are measured by the percentage of mutants that they kill. New tests can be designed to kill additional mutants. Mutants are based on well-defined mutation operators that either mimic typical programming errors (such as using the wrong operator or variable name) or force the creation of valuable tests (such as dividing each expression by zero). The purpose is to help the tester develop effective tests or locate weaknesses in the test data used for the program or in sections of the code that are seldom or never accessed during execution. Mutation testing is a form of white-box testing. Wikipedia
Library | Comment |
---|---|
CREAM | Also known as CREAtor of Mutants |
Fettle | |
Nester | |
NinjaTurtles | Discontinued |
NinjaTurtlesMutation | Fork of NinjaTurtles |
PIT | |
Stryker | |
Testura.Mutation | |
VisualMutator |
Exploratory testing is an approach to software testing that is often described as simultaneous learning, test design, and execution. It focuses on discovery and relies on the guidance of the individual tester to uncover defects that are not easily covered in the scope of other tests. Atlassian
Library | Comment |
---|---|
Microsoft IntelliTest | Part of Visual Studio Previously known as: - Microsoft Code Digger - Microsoft Pex - Microsoft Smart Unit Tests |
Randoop.NET |
Property based testing relies on properties. It checks that a function, program or whatever system under test abides by a property. Most of the time, properties do not have to go into too much details about the output. They just have to check for useful characteristics that must be seen in the output. Nicolas Dubien, Introduction to Property Based Testing
Library | Comment |
---|---|
CsCheck | |
FsCheck | Port of QuickCheck |
Hedgehog | F# port of Hedgehog |
Library | Comment |
---|---|
ApprovalTests.Net | |
DiffEngine | Manages launching and cleanup of diff tools. Used by ApprovalTests, Shouldly, Verify |
Polaroider | |
Shouldly | See ShouldMatchApproved |
Snapper | |
Snapshooter | |
Verify |
Library | Comment |
---|---|
AxoCover | Based on OpenCover |
Coverlet | |
dotCover | |
Fine Code Coverage | |
NCover | |
NCrunch | |
NDepend | |
OpenCover | |
PartCover | Discontinued |
Semantic Designs C# Test Coverage Tool | |
Software Verify .NET Coverage Validator | |
Squish Coco | |
TestMatrix | |
Typemock Isolator Coverage | |
Visual Studio Code Coverage | Part of Visual Studio |
Continuous testing is the process of executing automated tests as part of the software delivery pipeline to obtain immediate feedback on the business risks associated with a software release candidate. Wikipedia
Library | Comment |
---|---|
Continuous Testing for Visual Studio 2010 | Discontinued |
ContinuousTests | Formerly Mighty Moose |
dotCover | |
Giles | |
Live Unit Testing | Part of Visual Studio |
NCrunch | |
Parasoft dotTEST | |
Typemock Isolator Smart Runner |
Library | Comment |
---|---|
Fluent Assertions | |
NFluent | |
NUnitEx | Discontinued |
SharpTestEx | Discontinued |
Should Assertion Library | Discontinued |
Shouldly |
Library | Comment |
---|---|
Any-.Net | Discontinued |
AutoBogus | |
AutoFixture | |
AutoPoco | Discontinued |
AutoPocoIO | |
Bogus | |
Fabricator | Discontinued |
Faker.Net | Discontinued |
GenFu | |
Hydrator | Discontinued |
NaughtyStrings | .NET API for Naughty Strings |
NBuilder | |
NTestDataBuilder | - Now TestStack.Dossier - Discontinued |
TestData | |
TestDataFactory | Discontinued |
TestDataGenerator | Discontinued |
TestStack.Dossier | |
Tynamix ObjectFiller.NET |
Library | Comment |
---|---|
Q# Test Project |
Library | Comment |
---|---|
AutoMoq | Auto mocking provider for Moq, Discontinued |
Automoqer | Auto mocking provider for Moq, Discontinued |
ConventionTests | Library that makes it easy to build validation rules for convention validation tests |
FakeLocalTimeZone | Fake of system TimeZone |
Fixie | Convention for tests |
FluentMvcTesting | Type-safe tests against ASP.NET MVC Controllers |
MockQueryable | Extensions for mocking EfCore |
SparkyTestHelpers | Unit test helpers for config files, ASP.NET MVC, and Moq among others |
XMLUnit | Unit testing XML |
Library | Comment |
---|---|
.NET Testcontainers | Library to support tests with throwaway instances of Docker containers |
AccidentalFish.FSharp.Validation | Simple validator DSL / library for F# |
ArchUnitNET | Library for checking the architecture of C# code |
CheckTestOutput | A library for semi-manual tests. Run a function, manually check the output. But only if it is different than last run |
Compare-Net-Objects | Deep compare of any two .NET objects using reflection |
Gallio Automation Platform | - Common object model, runtime services and tools (such as test runners) that may be leveraged by any number of test frameworks. - Discontinued |
ErrorUnit | Debug C# application by automatically creating C# Unit Tests in Visual Studio that recreate the situation leading up to the error |
ExpressionToCode | Generates valid, readable C# from an Expression Tree |
KREM | Automation and test framework. Integration, regression, spec testing. Well suitable for embedded. Written in Python, but support external scripts, etc. |
Microsoft.Testing.Platform | Microsoft.Testing.Platform is a lightweight and portable alternative to VSTest for running tests in all contexts, including continuous integration (CI) pipelines, CLI, Visual Studio Test Explorer, and VS Code Text Explorer. The Microsoft.Testing.Platform is embedded directly in your test projects, and there's no other app dependencies, such as vstest.console or dotnet test needed to run your tests. |
NBi | Framework to test Business Intelligence |
NScenario | Library for annotating steps of test case scenarios |
Quality Gate One Studio | Combinatorial and Model-Based Testing, Discontinued |
Scientist.NET | A library for carefully refactoring critical paths |
Squish Test Center | Aggregates test results in a central server and generates statistics |
TestFlask | Recording and mock replay framework with the ability to generate unit tests for recorded scenarios. It also provides some tools to ease scenario testing inside ASP.NET MVC apps |
Visual Studio Test Platform | Also known as VSTest The Visual Studio Test Platform is an open and extensible test platform that enables running tests, collect diagnostics data and report results. The Test Platform supports running tests written in various test frameworks, and using a pluggable adapter model. Based on user-choice, the desired test framework and its corresponding adapter can be acquired as a vsix or as NuGet package as the case may be. Adapters can be written in terms of a public API exposed by the Test Platform. |
xRetry | Retry flickering test cases for xUnit and SpecFlow |
Library | Comment |
---|---|
GennyMcGenFace | Unit test generator |
nMate | - Unit test code generator - Discontinued |
QuickUnit Unit Test Designer | |
ReSharper | |
TestDriven.Net | |
Unit Test Boilerplate Generator | |
Unit Test Generator | Discontinued |
Unitverse | Unit test generator |
Visual T# | Discontinued |
WiseTester |