FREEDOM251

Freedom251 › Property-Based Testing Tools

CsCheck

Free plan Self-hosted

Visit CsCheck Alternatives Pricing

CsCheck's own site

What CsCheck is

CsCheck is a free C# random testing library inspired by QuickCheck, intended for self-hosted use. Its composable Gen classes generate cases and support automatic shrinking without Arb classes; a shrunk case includes a seed that can reproduce a failure. The library supports random, model-based, metamorphic, performance, specification, regression, parallel, and equality testing. Parallel tests compare outcomes against possible linearizations and support shrinking. Specification checks can enumerate a reachable state space or sample it, and can test whether declared faults are caught. Its Faster function statistically compares methods and can run as a regular test across platforms. The README examples use TUnit, though the project says the library can work with any testing framework. The project page reports more than 1,000 F# tests using CsCheck in MKL.NET. NuGet lists version 4.9.1 and provides .NET CLI and PackageReference installation instructions. The project notes that generic recursion limits AOT compatibility, and that the Dbg module is temporary and may change between minor versions.

Who it suits

CsCheck suits C# and F# developers who want generated, shrinkable tests and reproducible failures. It can be used with TUnit or other testing frameworks.

What it does well

  • Automatic shrinking is supported without Arb classes.
  • Shrunk cases include seeds for reproducing failures.
  • Supports stateful, parallel, and specification testing.
  • Faster statistically compares method performance.
  • The project states that no reflection was used.

What to know first

  • Generic recursion limits AOT compatibility.
  • The Dbg API may change between minor versions.
  • It is intended for self-hosted use.

Plans

PlanBilled and limitsPrice
CsCheckApache 2 · free foreverFree

As github.com lists them, read 4 Oct 2026. The maker's own page has the final word.

Getting started

  1. Open the CsCheck project page at https://github.com/AnthonyLloyd/CsCheck.
  2. Install CsCheck 4.9.1 using the documented .NET CLI package command or PackageReference.
  3. Use the library in your C# or F# project.
  4. Use TUnit or another testing framework for your tests.

Verdict

CsCheck offers a broad set of generated and stateful testing approaches, with shrinking and reproducibility built in. Developers considering AOT use should account for the stated generic-recursion limitation.

Questions

How much does CsCheck cost?

The CsCheck plan is free, under Apache 2, and free forever.

Which languages does it support?

The listed supported languages are C# and F#.

Does it require TUnit?

No. The README examples use TUnit, but the project says CsCheck can be used with any testing framework.

Can a failing test be reproduced?

Shrunk cases have a seed value that can be used to reproduce a failure.

Is CsCheck AOT compatible?

The project describes it as close to AOT compatible, with generic recursion as a limitation.

How is CsCheck installed?

NuGet documents installation with the .NET CLI package command or PackageReference.

Facts from CsCheck's own pages

AOT caveat
The project says CsCheck is close to being AOT compatible but generic recursion is a limitation. · github.com, 4 Oct 2026
Concurrency
Parallel testing compares results against possible linearizations and supports shrinking. · github.com, 4 Oct 2026
Debug utility limitation
The Dbg module is described as temporary debug functionality whose API may change between minor versions. · github.com, 4 Oct 2026
Framework support
The README says its example tests use TUnit but could equally be used in any testing framework. · github.com, 4 Oct 2026
F# usage
The project page reports 1,000+ F# tests using CsCheck in MKL.NET. · github.com, 4 Oct 2026
Generators
Its composable Gen classes support automatic shrinking without Arb classes. · github.com, 4 Oct 2026
Installation
NuGet lists CsCheck 4.9.1 and documents installation with the .NET CLI package command and PackageReference. · nuget.org, 4 Oct 2026
Logging
Sample supports logging types and pass and fail results for analysis, and the project includes a Tyche logging implementation. · github.com, 4 Oct 2026
Performance testing
Its Faster function statistically compares whether one method is faster than another and can be run as a normal test across platforms. · github.com, 4 Oct 2026
Product
CsCheck is a C# random testing library inspired by QuickCheck. · github.com, 4 Oct 2026
Reproducibility
Shrunk cases have a seed value that can be used to reproduce a failure. · github.com, 4 Oct 2026
Security and reflection
The project states that no reflection was used in making CsCheck. · github.com, 4 Oct 2026
Specification checks
Specification testing can exhaustively enumerate a reachable state space or sample it, and can check whether declared faults are caught. · github.com, 4 Oct 2026
Support and contributions
The README invites contributions through pull requests for new Gen classes or extensions. · github.com, 4 Oct 2026
Testing styles
The library supports random, model-based, metamorphic, performance, specification, regression, parallel, and equality testing. · github.com, 4 Oct 2026

Where CsCheck stands on Freedom251

Look at these too