QuickCheckr 0.0.5
There is a newer version of this package available.
See the version list below for details.
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" />
<PackageReference Include="QuickCheckr" />
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
The NuGet Team does not provide support for this client. Please contact its maintainers for support.
#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
#tool nuget:?package=QuickCheckr&version=0.0.5
The NuGet Team does not provide support for this client. Please contact its maintainers for support.
<img src='icon.png' width='40' align='top'/> QuickCheckr
CSI: .NET
Property-based testing for the pragmatic.
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.
- Start here: Checkr-ing Things Out
- Then see it catch a real bug: Bolting Horses
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
License
This project is licensed under the MIT License.
| Product | Versions 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.
-
net8.0
- QuickFuzzr (>= 0.1.7)
- QuickPulse.Show (>= 0.1.11)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.