FsCheck vs Gopter
FsCheck
fscheck.github.ioGopter
github.comSide by side
| Figure | FsCheck | Gopter |
|---|---|---|
| Price from | Free | Free |
| Free plan | Yes | Yes |
| Free trial | — | — |
| Open source | — | — |
| Windows | Yes | — |
| macOS | Yes | — |
| Linux | Yes | Yes |
| Self-hosted | — | Yes |
| Plans published | 1 | 2 |
| Spec score · Property-Based Testing Tools | 8.4 (#3) | 8.6 (#2) |
| Generators | Users can define custom test data generators and shrinkers, and package them together in Arbitrary instances. | It provides tighter control over generators than Go's testing/quick package. |
| License | The project says its BSD license permits modification and redistribution for commercial and non-commercial purposes. | The repository identifies Gopter as MIT licensed. |
| Purpose | FsCheck automatically tests .NET programs by checking properties against randomly generated cases. | Gopter is a Go property-testing library that brings ideas from ScalaCheck and QuickCheck to Go. |
| Stateful testing | Model-based testing for stateful systems and objects is in the Experimental namespace, where semantic-versioning promises do not apply. | Gopter supports stateful tests. |
Plans
In their own words
FsCheck
FsCheck checks properties of.NET programs against randomly generated cases. Developers can express properties in F#, C# or VB, then run them with the built-in runner from an interactive session, a command-line program or a test framework. Integrations are documented for xUnit.net and NUnit, with user-created integrations for Expecto, Fuchu, AutoFixture and MSTest. When a property fails, FsCheck shrinks the input and shows a minimal counterexample. Developers can also define custom generators and shrinkers and group them in Arbitrary instances. The library supports parameterized cases and parallel execution, and its packages and NUnit and xUnit.NET plugins are available from NuGet. FsCheck is free: its listed plan is free, with a BSD license permitting commercial and non-commercial modification and redistribution. It runs on Linux, macOS and Windows. The project maintains version 3.x, but its documentation covers 2.x and is described as out of date and incomplete. Its model-based testing API is experimental and exempt from semantic-versioning guarantees.
Gopter
Gopter is a free Go module for property-based testing. It creates properties from conditions and generated inputs, then checks whether those properties hold. Its generators provide more control than Go's testing/quick package and can be composed with operations such as Map, FlatMap, SuchThat, and WithShrinker. When a property fails, shrinkers seek a smaller value that still demonstrates the failure. Gopter also includes a generator for regular-expression matches and supports stateful tests based on arbitrary commands. Properties can run with Go's testing.T through TestingRun, and the gopter/convey package provides helpers for using Gopter inside GoConvey tests. Console and formatted reporters present test results. The project declares Go 1.20 and is distributed under the MIT License. Its documentation covers the gopter, gen, prop, arbitrary, commands, and convey packages. The README identifies two omissions: ScalaCheck's Pretty feature is not provided, and parallel commands are not available yet.