Home

Awesome

List of Automated Testing (TDD/BDD/ATDD/SBE) Tools and Frameworks for .NET

List of Automated Testing Frameworks for .NET related to methodologies and types of tests:

Please feel free to suggest changes and/or new tools/frameworks.

Key:

Table of Contents

Unit Testing Frameworks

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

LibraryComment
csUnitDiscontinued
EMTF- Discontinued<br>- Known as Embeddable Micro Test Framework
ExpectoF#
FsUnitF#
FuchuF# / C# / VB.NET
MbUnitDiscontinued
MSTestAlso known as Microsoft Test Framework
NUnit
NUnitLiteDiscontinued
RoasterDiscontinued
TUnit
UnquoteF#
xUnit.net

Isolation Frameworks

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

LibraryComment
CleanMoqOne of the recommended fork of Moq
FakeItEasy
FoqF#, Discontinued
JustMockNon-free
JustMock Lite
Microsoft FakesPreviously known as Microsoft Moles
MoqNot recommended; read https://github.com/moq/moq/issues/1372
NMock
NSubstitute
NUnit.MocksDiscontinued
Rhino MocksDiscontinued
SimpleStubs
Typemock IsolatorNon-free

Mock\replace anything (static, non-virtual, etc.)

LibraryComment
Harmony 2.0Runtime alter functionality by monkey patching methods
PosePose 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.
SmocksSmocks uses some magic under the hood to mock the normally unmockable.

Acceptance Testing / Behavior-Driven Development / Specification by Example

LibraryComment
ApprovalTests.NetDiscontinued
AvignonDiscontinued
BDDfy
BddPipe
BDTest
Concordion.NET
CoreBDD
Cucumber
Cuke4NukeDiscontinued
FitNesse
Gauge
HonestCodeDiscontinued
LightBDD
LoFuUnit
Machine.SpecificationsAlso known as MSpec
NaturalSpecDiscontinued
NBehaveDiscontinued
NDecisionDiscontinued
NScenario
NSpec
Ogooreck
ReqnrollOpen-source reboot of the SpecFlow project
Robot Framework
Spec4NetDiscontinued
SpecFlow
SpecsFor
SpecterDiscontinued
StoryQDiscontinued
StoryTeller
SubSpecDiscontinued
System.SpecDiscontinued
TickSpec
Verify
xBehave.netDiscontinued
Xunit.Gherkin.Quick

Web Application Testing

Testing web application UI e.g. via browser engine.

LibraryComment
Atata
CanopyF#
Coypu
FluentAutomationDiscontinued
IeUnitDiscontinued
IvonnaDiscontinued
NetlingLoad tests for web
NUnitAspDiscontinued
Playwright for .NET- Port of Playwright<br />- Developed by Microsoft
Puppeteer Sharp- See also Puppeteer Sharp Contributions
RanorexGUI testing for desktop, web and mobile applications
Selenium
Squish GUI Tester
Test.Automation
TestComplete
TestLeft
TestStack.Seleno
WatiNDiscontinued

Web Testing

Testing ASP.NET, HTTP, HttpClient, REST, Web Sockets, AMQP, Blazor etc.

LibraryComment
AlbaUtilities for ASP.Net Core web services testing
bUnitBlazor components testing
DFrameThis 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#.
FakeHttpContextFake context for HttpContext.Current
FlurlURL builder and HTTP client library.
HttpClient InterceptionSimple library to provide stub responses in tests using HttpClient.
Mock4NetA fluent API allows to specify the behavior of the server and hence easily stub and mock webservices and REST resources
MockHttpReplacement for HttpMessageHandler
MockNetFriendly mocking framework to unit test the System.Net.Http namespace
MockingBirdDiscontinued
My Tested ASP.NETA fluent unit testing library for ASP.NET Core MVC
NBomberLoad testing
PactNet- Port of Pact<br />- Testing for integrating web apps, APIs and microservices
StubberyAPI stubs
WireMock.NetHTTP response stubbing, matchable on URL/Path, headers, cookies and body content patterns

Cloud Testing

LibraryComment
AWS .NET Mock Lambda Test Tool
Azure Functions Test Fixture
Azure Resource Manager Template Toolkit (arm-ttk)

User Interface Testing

Testing system UI (Win32, WinForms, UWP, etc.), embedded, mobile apps

LibraryComment
AppiumSupports testing of Universal Windows Platform (UWP) and Classic Windows (Win32) applications
Coded UIDiscontinued
FlaUIAutomated UI testing of Windows applications (Win32, WinForms, WPF, Store Apps)
NUnitFormsDiscontinued
RanorexGUI testing for desktop, web and mobile applications
ScrutinyF# and C# library for testing state machines by randomly choosing available states and valid transitions. Designed for usage with UI tests.
Squish GUI TesterAll 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.WhiteDiscontinued
WinAppDriver- Windows Application Driver<br>- Service to support Selenium-like UI Test Automation on Windows Applications<br>- Supports testing Universal Windows Platform (UWP), Windows Forms (WinForms), Windows Presentation Foundation (WPF), and Classic Windows (Win32) apps on Windows 10 PCs

Database Testing

LibraryComment
DbUnit.NETDiscontinued
NDbUnit- Discontinued<br>- Managing database state during unit testing
RespawnA small utility to help in resetting test databases to a clean state

Video Game Testing

LibraryComment
GameDriver

Concurrent Testing

LibraryComment
FluentAssertions.Extensions
Microsoft CHESS- Discontinued<br>- "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.ThreadTesterDiscontinued
Typemock RacerDiscontinued

Memory Testing

LibraryComment
.NET Memory ProfilerAlso known as MemProfiler
dotMemory Unit

Mutation Testing

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

LibraryComment
CREAMAlso known as CREAtor of Mutants
Fettle
Nester
NinjaTurtlesDiscontinued
NinjaTurtlesMutationFork of NinjaTurtles
PIT
Stryker
Testura.Mutation
VisualMutator

Automated Exploratory Testing

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

LibraryComment
Microsoft IntelliTestPart of Visual Studio<br>Previously known as:<br>- Microsoft Code Digger<br>- Microsoft Pex<br>- Microsoft Smart Unit Tests
Randoop.NET

Property-Based Testing

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

LibraryComment
CsCheck
FsCheckPort of QuickCheck
HedgehogF# port of Hedgehog

Approval Testing

LibraryComment
ApprovalTests.Net
DiffEngineManages launching and cleanup of diff tools. Used by ApprovalTests, Shouldly, Verify
Polaroider
ShouldlySee ShouldMatchApproved
Snapper
Snapshooter
Verify

Code Coverage

LibraryComment
AxoCoverBased on OpenCover
Coverlet
dotCover
Fine Code Coverage
NCover
NCrunch
NDepend
OpenCover
PartCoverDiscontinued
Semantic Designs C# Test Coverage Tool
Software Verify .NET Coverage Validator
Squish Coco
TestMatrix
Typemock Isolator Coverage
Visual Studio Code CoveragePart of Visual Studio

Continuous Testing

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

LibraryComment
Continuous Testing for Visual Studio 2010Discontinued
ContinuousTestsFormerly Mighty Moose
dotCover
Giles
Live Unit TestingPart of Visual Studio
NCrunch
Parasoft dotTEST
Typemock Isolator Smart Runner

Fluent Assertion Frameworks

LibraryComment
Fluent Assertions
NFluent
NUnitExDiscontinued
SharpTestExDiscontinued
Should Assertion LibraryDiscontinued
Shouldly

Test Data Builders and Dummy Data Generators

LibraryComment
Any-.NetDiscontinued
AutoBogus
AutoFixture
AutoPocoDiscontinued
AutoPocoIO
Bogus
FabricatorDiscontinued
Faker.NetDiscontinued
GenFu
HydratorDiscontinued
NBuilder
NTestDataBuilder- Now TestStack.Dossier<br />- Discontinued
TestData
TestDataFactoryDiscontinued
TestDataGeneratorDiscontinued
TestStack.Dossier
Tynamix ObjectFiller.NET

Quantum Programming

LibraryComment
Q# Test Project

Helper Libraries

LibraryComment
AutoMoqAuto mocking provider for Moq, Discontinued
AutomoqerAuto mocking provider for Moq, Discontinued
ConventionTestsLibrary that makes it easy to build validation rules for convention validation tests
FakeLocalTimeZoneFake of system TimeZone
FixieConvention for tests
FluentMvcTestingType-safe tests against ASP.NET MVC Controllers
MockQueryableExtensions for mocking EfCore
SparkyTestHelpersUnit test helpers for config files, ASP.NET MVC, and Moq among others
XMLUnitUnit testing XML

Miscellaneous Tools

LibraryComment
.NET TestcontainersLibrary to support tests with throwaway instances of Docker containers
AccidentalFish.FSharp.ValidationSimple validator DSL / library for F#
ArchUnitNETLibrary for checking the architecture of C# code
CheckTestOutputA library for semi-manual tests. Run a function, manually check the output. But only if it is different than last run
Compare-Net-ObjectsDeep 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.<br> - Discontinued
ErrorUnitDebug C# application by automatically creating C# Unit Tests in Visual Studio that recreate the situation leading up to the error
ExpressionToCodeGenerates valid, readable C# from an Expression Tree
KREMAutomation and test framework. Integration, regression, spec testing. Well suitable for embedded. Written in Python, but support external scripts, etc.
NBiFramework to test Business Intelligence
NScenarioLibrary for annotating steps of test case scenarios
Quality Gate One StudioCombinatorial and Model-Based Testing, Discontinued
Scientist.NETA library for carefully refactoring critical paths
Squish Test CenterAggregates test results in a central server and generates statistics
TestFlaskRecording 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
xRetryRetry flickering test cases for xUnit and SpecFlow

Visual Studio Add-Ins

LibraryComment
GennyMcGenFaceUnit test generator
nMate- Unit test code generator<br />- Discontinued
QuickUnit Unit Test Designer
ReSharper
TestDriven.Net
Unit Test Boilerplate Generator
Unit Test GeneratorDiscontinued
UnitverseUnit test generator
Visual T#Discontinued
WiseTester

References