FsCheck 3.0.0-beta1
See the version list below for details.
dotnet add package FsCheck --version 3.0.0-beta1
NuGet\Install-Package FsCheck -Version 3.0.0-beta1
<PackageReference Include="FsCheck" Version="3.0.0-beta1" />
<PackageVersion Include="FsCheck" Version="3.0.0-beta1" />
<PackageReference Include="FsCheck" />
paket add FsCheck --version 3.0.0-beta1
#r "nuget: FsCheck, 3.0.0-beta1"
#:package FsCheck@3.0.0-beta1
#addin nuget:?package=FsCheck&version=3.0.0-beta1&prerelease
#tool nuget:?package=FsCheck&version=3.0.0-beta1&prerelease
FsCheck is a tool for testing .NET programs automatically. You provide a specification of the program, in the form of properties which functions, methods or objects should satisfy, and FsCheck then tests that the properties hold in a large number of randomly generated cases. Such properties are actually a testable specification of your program.
Properties are written in F#, C# or VB. FsCheck helps you to define properties, observe the distribution of test data, and define test data generators. Crucially, when a property fails, FsCheck automatically displays a minimal counter example.
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net5.0 was computed. net5.0-windows was computed. net6.0 was computed. net6.0-android was computed. net6.0-ios was computed. net6.0-maccatalyst was computed. net6.0-macos was computed. net6.0-tvos was computed. net6.0-windows was computed. net7.0 was computed. net7.0-android was computed. net7.0-ios was computed. net7.0-maccatalyst was computed. net7.0-macos was computed. net7.0-tvos was computed. net7.0-windows was computed. net8.0 was computed. 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. |
| .NET Core | netcoreapp2.0 was computed. netcoreapp2.1 was computed. netcoreapp2.2 was computed. netcoreapp3.0 was computed. netcoreapp3.1 was computed. |
| .NET Standard | netstandard2.0 is compatible. netstandard2.1 was computed. |
| .NET Framework | net461 was computed. net462 was computed. net463 was computed. net47 was computed. net471 was computed. net472 was computed. net48 was computed. net481 was computed. |
| MonoAndroid | monoandroid was computed. |
| MonoMac | monomac was computed. |
| MonoTouch | monotouch was computed. |
| Tizen | tizen40 was computed. tizen60 was computed. |
| Xamarin.iOS | xamarinios was computed. |
| Xamarin.Mac | xamarinmac was computed. |
| Xamarin.TVOS | xamarintvos was computed. |
| Xamarin.WatchOS | xamarinwatchos was computed. |
-
.NETStandard 2.0
- FSharp.Core (>= 4.5.0)
NuGet packages (34)
Showing the top 5 NuGet packages that depend on FsCheck:
| Package | Downloads |
|---|---|
|
FsCheck.Xunit
FsCheck.Xunit integrates FsCheck with xUnit.NET by adding a PropertyAttribute that runs FsCheck tests, similar to xUnit.NET's FactAttribute. All the options normally available in vanilla FsCheck via configuration can be controlled via the PropertyAttribute. |
|
|
FsCheck.NUnit
FsCheck.NUnit integrates FsCheck with NUnit by adding a PropertyAttribute that runs FsCheck tests, similar to NUnit TestAttribute. All the options normally available in vanilla FsCheck via configuration can be controlled via the PropertyAttribute. |
|
|
Expecto.FsCheck
Property testing for Expecto, powered by FsCheck |
|
|
AutoFixture.Idioms.FsCheck
Ubiquitous use of AutoFixture for unit testing has given rise to a number of idiomatic unit tests - unit tests that tend to follow common templates. The AutoFixture Idioms.FsCheck library encapsulates these idioms into reusable classes and methods. |
|
|
MBrace.Tests
A collection of abstract NUnit-based test suites for evaluating MBrace runtime implementations. |
GitHub repositories (21)
Showing the top 20 popular GitHub repositories that depend on FsCheck:
| Repository | Stars |
|---|---|
|
dotnet/runtime
.NET is a cross-platform runtime for cloud, mobile, desktop, and IoT apps.
|
|
|
akkadotnet/akka.net
Canonical actor model implementation for .NET with local + distributed actors in C# and F#.
|
|
|
commandlineparser/commandline
The best C# command line parser that brings standardized *nix getopt style, for .NET. Includes F# support
|
|
|
thomhurst/TUnit
A modern, fast and flexible .NET testing framework
|
|
|
AIDotNet/OpenDeepWiki
OpenDeepWiki is the open-source version of the DeepWiki project, aiming to provide a powerful knowledge management and collaboration platform. The project is mainly developed using C# and TypeScript, supporting modular design, and is easy to expand and customize.
|
|
|
microsoft/onefuzz
A self-hosted Fuzzing-As-A-Service platform
|
|
|
NeutroniumCore/Neutronium
🚀 Build .NET desktop applications using HTML, CSS and javascript.
|
|
|
dotnet/dotnet
Home of .NET's Virtual Monolithic Repository which includes all the code needed to build the .NET SDK.
|
|
|
SolrNet/SolrNet
Solr client for .Net
|
|
|
la-yumba/functional-csharp-code
Code samples for Functional Programming in C#
|
|
|
TolikPylypchuk/SharpHook
SharpHook provides a cross-platform global keyboard and mouse hook, event simulation, and text entry simulation for .NET
|
|
|
helios-io/helios
reactive socket middleware for .NET
|
|
|
exercism/csharp
Exercism exercises in C#.
|
|
|
VSadov/Satori
Experimenting with dotnet runtime.
|
|
|
viciousviper/DokanCloudFS
A virtual filesystem for various publicly accessible Cloud storage services on the Microsoft Windows platform.
|
|
|
serdedotnet/serde
Serde.NET is a C# port of the popular Serde serialization library for Rust
|
|
|
la-yumba/functional-csharp-code-2
|
|
|
oskardudycz/Ogooreck
Sneaky Testing Library in BDD style
|
|
|
Vonage/vonage-dotnet-sdk
Vonage REST API client for .NET, written in C#. API support for SMS, Voice, Text-to-Speech, Numbers, Verify (2FA) and more.
|
|
|
petabridge/TurboMqtt
The fastest Message Queue Telemetry Transport (MQTT) client for .NET.
|
| Version | Downloads | Last Updated |
|---|---|---|
| 3.3.3 | 36,687 | 4/26/2026 |
| 3.3.2 | 597,605 | 11/9/2025 |
| 3.3.1 | 158,157 | 8/24/2025 |
| 3.3.0 | 167,208 | 6/3/2025 |
| 3.2.0 | 98,893 | 4/10/2025 |
| 3.1.0 | 249,792 | 1/30/2025 |
| 3.0.1 | 27,151 | 1/22/2025 |
| 3.0.0 | 107,918 | 1/7/2025 |
| 3.0.0-rc3 | 163,727 | 3/3/2024 |
| 3.0.0-rc2 | 1,852 | 2/25/2024 |
| 3.0.0-rc1 | 61,240 | 7/23/2023 |
| 3.0.0-beta2 | 93,734 | 1/8/2022 |
| 3.0.0-beta1 | 16,107 | 9/5/2021 |
| 2.16.6 | 2,392,773 | 7/1/2023 |
| 2.16.5 | 1,297,301 | 6/1/2022 |
| 2.16.4 | 721,519 | 1/8/2022 |
| 2.16.3 | 326,870 | 9/4/2021 |
| 2.16.2 | 11,904 | 8/30/2021 |
| 2.16.0 | 67,076 | 8/13/2021 |
Backwards incompatible*: Refactor and split of the `Gen` and `Arbitrary` APIs into `FsCheck.FSharp` and `FsCheck.Fluent`. This is a first step in splitting the entire API into a functional (for F# consumers) and fluent (for C# and VB.NET consumers) interface. This should be clearer for both kinds of consumers.
By and large, if you are an F# user, now `open FsCheck.FSharp` in addition to `open FsCheck`. If you are a C# or VB.NET user, add `using FsCheck.Fluent`.
Backwards incompatible*: redesigned API for per-type Arbitrary instance discovery and lookup. There is no longer a single global, mutable map of type to Arbitrary instances, instead there are any number of immutable `IArbMap`s that can be configured at your leisure, and set via `Config.WithArbitrary` on the test.
Detailed changes to `FsCheck.FSharp.Gen`: Added `RequireQualifiedAccess`. Added `apply` and `bind`. Renamed `collect` and `sequence` to `collect/sequenceToList/Array/Seq` for clarity. Removed `unzip` and `unzip3` - their implementation is problematic, and it's hard to see a use case for them. Removed `subListOfToIlist`, `subListOfArr` - these returned `IList<'T>` types. Untupled `rows,cols` arguments in `array2DOfDim`.
Detailed changes to `FsCheck.Fluent.Gen`: Split into non-extension methods on `Gen` and extension methods on `Gen<T>` type in `GenExtensions`. Removed `Gen.Apply` - not useful without partial application. `Two`, `Three`, `Four` and `Zip` now output ValueTuples, which is idiomatic in modern C#, and are only visible as extension methods on `Gen<T>`. Removed the overloads of `Zip` with arity 3. Changed the return type of methods that returned `IList<T>` previously to `List<T>`. Split the `Sample` method with optional arguments in three overloads, this is better for backwards compatibilty going forward.
Detailed changes to `FsCheck.FSharp.Arb`: Removed `fromGenShrinkFunc`. Removed `register`, `registerByType`, `from`, `generate` and `shrink` - these are replaced by functions on `ArbMap`, resp. `mergeWith`, `mergeWithType`, `arbitrary` and `generate`. Made `Arb.Default` internal. Default types should now be looked up using `ArbMap`, e.g. `ArbMap.defaults |> ArbMap.arbitrary<list<int>>`.
Detailed changes to `FsCheck.Fluent.Arb`: Removed extension method `ToArbitrary` that took an F# function as argument for the shrinker. Renamad `Arb.From` methods to `Arbitrary.From` - C# does not tolerate ambiguity between using two types of the same name in the same namespace. Removed `Register`, `RegisterByType`, `From`, `Generate` and `Shrink` - these are replaced by methods on `ArbMap`, resp. `Merge<'T>`, `Merge`, `ArbFor` and `GeneratorFor`. Made `Arb.Default` internal. Default Arbitrary types should now be looked up using `ArbMap`, e.g. `ArbMap.Default.ArbFor<int[]>()`.
First pass at improving XML docs for Gen API.
Fixed bug in `try..with` computation expression builder.
Added support for `let!...and!...` syntax in computation expression builder.