QuickCheckr 0.0.5

There is a newer version of this package available.
See the version list below for details.
dotnet add package QuickCheckr --version 0.0.5
                    
NuGet\Install-Package QuickCheckr -Version 0.0.5
                    
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="QuickCheckr" Version="0.0.5" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="QuickCheckr" Version="0.0.5" />
                    
Directory.Packages.props
<PackageReference Include="QuickCheckr" />
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add QuickCheckr --version 0.0.5
                    
#r "nuget: QuickCheckr, 0.0.5"
                    
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package QuickCheckr@0.0.5
                    
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=QuickCheckr&version=0.0.5
                    
Install as a Cake Addin
#tool nuget:?package=QuickCheckr&version=0.0.5
                    
Install as a Cake Tool

<img src='icon.png' width='40' align='top'/> QuickCheckr

CSI: .NET

Property-based testing for the pragmatic.

Docs NuGet License: MIT

Example

Buggy Code:

public class BugHouse
{
    private int count;
    public bool Run(int number)
    {
        if (count == 5) throw new Exception("Here's Johnny");
        if (number == 6 && count != 3) count++;
        if (count >= 3) count++;
        return true;
    }
}

The Checkr:

from bughouse in Trackr.Stashed(() => new BugHouse())
from number in Checkr.Input("number", Fuzzr.Int())
from output in Checkr.Act("BugHouse.Run", () => bughouse.Run(number))
from expect in Checkr.Expect("Returns true", () => output)
select Case.Closed;

Reports:

------------------------------------------------------------
 Test:                    Example
 Location:                CreateReadMe.cs:26:1
 Original failing run:    85 executions
 Minimal failing case:    5 executions (after 82 shrinks)
 Seed:                    1141724745
 ------------------------------------------------------------
  Executed: BugHouse.Run (3 Times)
   - Input: number = 6
 ------------------------------------------------------------
  Executed: BugHouse.Run (2 Times)
 ===========================================================================
  !! Exception Thrown: System.Exception: Here's Johnny
   at QuickCheckr.Tests.CreateReadMe.BugHouse.Run(Int32 number) in CreateReadMe.cs:line 69
   at QuickCheckr.Tests.CreateReadMe.<>c__DisplayClass2_0.GetCheckr() in CreateReadMe.cs:line 57
   at QuickCheckr.Checkr.<>c__DisplayClass8_1`1.TryCatch() in CheckrAct.cs:line 69
   at QuickCheckr.UnderTheHood.TheCatcher.InTheCheckr[T](CheckrState state, Func`1 func, Action`1 onException) in UnderTheHood\TheCatcher.cs:line 14
 ===========================================================================
 Passed Expectations
 - Returns true: 84x
 ------------------------------------------------------------

Highlights

  • LINQ-based workflow: Build tests using familiar query expressions.
  • Shrinking: Reduce randomly generated scenarios to minimal failing cases.
  • Stateful testing: Pools, stashed objects, and multi-step behaviours supported out of the box.
  • Deterministic: Reproducible runs using seeds.
  • Built for Devs: Transparency and traceability as a first-class concern.

Installation

QuickCheckr is available on NuGet:

Install-Package QuickCheckr

Or via the .NET CLI:

dotnet add package QuickCheckr

Documentation

QuickCheckr is in the process of being fully documented, with real, executable examples for every feature, and every statement in the docs is backed by a test.

Full Guide: This is a work in progess. Follow the link to find out what's coming next.

Roadmap

  • Elm-style helpful exceptions.
  • Full Guide + Reference documentation.
  • Additional diagnostic flows.
  • True async execution throughout the engine.

Dependencies

  • QuickFuzzr: For random input generation.
  • QuickPulse.Show: For stringifying any C# object or value.
  • QuickPulse: Implicit through QuickPulse.Show. But also used for diagnostics filtering and transformations.

The Wonder(ing) Years

Why QuickCheckr Exists

License

This project is licensed under the MIT License.

Product Compatible and additional computed target framework versions.
.NET net8.0 is compatible.  net8.0-android was computed.  net8.0-browser was computed.  net8.0-ios was computed.  net8.0-maccatalyst was computed.  net8.0-macos was computed.  net8.0-tvos was computed.  net8.0-windows was computed.  net9.0 was computed.  net9.0-android was computed.  net9.0-browser was computed.  net9.0-ios was computed.  net9.0-maccatalyst was computed.  net9.0-macos was computed.  net9.0-tvos was computed.  net9.0-windows was computed.  net10.0 was computed.  net10.0-android was computed.  net10.0-browser was computed.  net10.0-ios was computed.  net10.0-maccatalyst was computed.  net10.0-macos was computed.  net10.0-tvos was computed.  net10.0-windows was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages

This package is not used by any NuGet packages.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
0.0.8 109 1/25/2026
0.0.7 101 12/29/2025
0.0.6 173 12/21/2025
0.0.5 235 12/14/2025
0.0.4 142 12/13/2025
0.0.3 685 12/2/2025
0.0.2 599 12/1/2025
0.0.1 206 11/27/2025