Freedom251 › Property-Based Testing Tools
Gopter

What Gopter is
Gopter is a free Go module for property-based testing: it generates inputs for conditions you define and checks the resulting properties. Its generator controls offer more options than Go's testing/quick package, with composition operations including Map, FlatMap, SuchThat and WithShrinker. When a property fails, shrinkers look for a smaller input that still reproduces the failure. Gopter also includes a generator for regular-expression matches and supports stateful tests built around arbitrary commands. Properties can run with Go's testing.T through TestingRun, and the gopter/convey package provides helpers for using Gopter within GoConvey tests. Console and formatted reporters display results. Documentation covers the gopter, gen, prop, arbitrary, commands and convey packages. The project declares Go 1.20 and uses the MIT License. Its README notes that it lacks ScalaCheck's Pretty feature and does not yet offer parallel commands. The package is listed as free.
Who it suits
Gopter is suited to Go developers who want generated inputs, shrinking and stateful property checks alongside the Go testing package or GoConvey.
What it does well
- Shrinks failing inputs toward a smaller counterexample.
- Supports stateful tests with arbitrary commands.
- Runs properties with Go's testing.T.
- Provides helpers for GoConvey tests.
- Generators support Map, FlatMap, SuchThat and WithShrinker.
What to know first
- No parallel commands yet.
- Does not provide ScalaCheck's Pretty feature.
- Requires Go 1.20, as declared by the project.
Limits
The free MIT-licensed package does not provide ScalaCheck’s Pretty feature, and parallel commands are not available yet.
Plans
| Plan | Billed and limits | Price |
|---|---|---|
| MIT-licensed package | MIT License · Go package | Free |
| Gopter | MIT-licensed Go property-testing library | Free |
As github.com lists them, read 30 Sept 2026. The maker's own page has the final word.
Getting started
- Open the Gopter GitHub repository.
- Use the Go module github.com/leanovate/gopter in a Go project.
- Run property checks through TestingRun with a Go testing.T context.
- Use gopter/convey helpers when running tests inside GoConvey.
Overview
Gopter brings property-based testing to Go, for developers who want to check conditions against generated inputs rather than rely only on hand-picked examples. Its strong point is control over generators and the ability to shrink a failure to a smaller counterexample; its clearest trade-off is that it lacks ScalaCheck’s Pretty feature and parallel commands.
Key features
Gopter is a more sophisticated alternative to Go’s testing/quick, particularly when the shape of generated data matters. Generator operations including Map, FlatMap, SuchThat and WithShrinker give developers ways to compose inputs and control reduction. When a generated case breaks a property, shrinking searches for a minimum value that still falsifies it. That makes the failure easier to inspect, while reproducible failures let developers return to the same problem.
The library also generates strings matching regular expressions and supports stateful tests based on arbitrary commands. Those capabilities suit properties involving constrained text or behavior across command sequences, not just isolated inputs. Gopter offers console and formatted reporters for results. Its TestingRun API runs checks with Go’s testing.T context, and gopter/convey adds helpers for using properties inside GoConvey tests.
Documentation covers the gopter, gen, prop, arbitrary, commands and convey packages. The project declares Go 1.20 and is distributed under the MIT License. The README identifies two meaningful omissions: no ScalaCheck-style Pretty feature and no parallel commands. Teams that depend on either should consider another tool rather than assume these workflows are covered.
Pricing
Gopter is free: both the MIT-licensed package and the Gopter plan cost nothing. There is no paid tier or free trial. The free package is the whole offering, so it fits individual developers and teams that can use a Go library under the MIT License; there is no lower tier with reduced functionality or paid plan for added capacity.
Platforms
Gopter is a Go module for Linux and self-hosted use, with module path github.com/leanovate/gopter. It supports Go, Go’s testing package and GoConvey. This is a library-oriented choice rather than a web test service, so it suits projects running tests in their own Go environment.
Who it's for
Choose Gopter if you write Go and want configurable generators, automatic shrinking and support for stateful properties within familiar Go test workflows. It is especially useful when generated failures need to be reduced to actionable cases. It is a weaker fit for teams that need parallel commands or ScalaCheck’s Pretty feature, or developers working outside Go.
Pros and cons
- Pros: Composable generator operations offer tighter input control than testing/quick.
- Pros: Shrinking and reproducible failures help turn a failing generated case into a smaller debugging target.
- Pros: Regex generation, stateful testing, Go testing integration and GoConvey helpers cover several Go testing styles.
- Pros: The MIT-licensed package is free, with no paid-plan boundary.
- Cons: Parallel commands are not available, limiting teams that need that form of test execution.
- Cons: The absence of ScalaCheck’s Pretty feature may matter to developers who expect that capability.
Alternatives
For other choices, browse Property-Based Testing Tools. Pick fast-check if your work is in JavaScript or TypeScript and you want a free, MIT-licensed public project; Scala Hedgehog is the free Scala-oriented option. CsCheck is another free, self-hosted choice, under Apache 2. For Haskell random property testing, consider QuickCheck. If you want a free, open-source Go library with no dependencies outside the standard library, Rapid is a direct alternative. Hypothesis, RapidCheck and Proptest are also alternatives.
Verdict
Gopter is a sound choice for Go developers who want to build richer property checks, narrow failures automatically and keep tests in Go’s testing or GoConvey workflows, all at no cost. Its generator control and shrinking are the main reasons to choose it over testing/quick; look elsewhere if parallel commands or ScalaCheck’s Pretty feature are requirements.
Verdict
Gopter offers generator composition, shrinking and testing integrations for Go property checks. Its documented gaps are the lack of ScalaCheck's Pretty feature and parallel commands.
Questions
Is Gopter free?
Yes. The package is free and distributed under the MIT License.
Which platforms does Gopter support?
The listed platforms are Linux and self-hosted. Gopter is a Go module and declares Go 1.20.
Can Gopter run with Go’s testing package?
Yes. TestingRun runs property checks with a Go testing.T context.
Does Gopter support GoConvey?
Yes. The gopter/convey package provides helpers for using Gopter inside GoConvey tests.
Does Gopter shrink failing cases?
Yes. Its shrinkers seek a minimum value that falsifies a property.
Facts from Gopter's own pages
- API usage
- The package provides TestingRun for running property checks with a Go testing.T context. · pkg.go.dev, 30 Sept 2026
- Commands limitation
- The README says parallel commands are not available yet. · github.com, 30 Sept 2026
- Documentation packages
- Documentation covers gopter, gen, prop, arbitrary, commands, and convey packages. · github.com, 30 Sept 2026
- Generator composition
- Generators support operations including Map, FlatMap, SuchThat, and WithShrinker. · pkg.go.dev, 2 Oct 2026
- Generators
- It provides tighter control over generators than Go's testing/quick package. · github.com, 2 Oct 2026
- GoConvey
- The gopter/convey package provides helpers for using Gopter inside GoConvey tests. · github.com, 2 Oct 2026
- GoConvey integration
- The convey package provides helpers used by Gopter inside GoConvey tests. · github.com, 30 Sept 2026
- Known limitation
- The README notes that Gopter does not provide ScalaCheck's Pretty feature and has no parallel commands yet. · github.com, 2 Oct 2026
- License
- The repository identifies Gopter as MIT licensed. · github.com, 2 Oct 2026
- Maker business
- Leanovate describes itself as a software development company supporting product implementation, technical scaling, digital transformation, organizational development, workshops, and training. · linkedin.com, 30 Sept 2026
- Maker size
- Leanovate is listed as having 11–50 employees. · linkedin.com, 30 Sept 2026
- Module version
- pkg.go.dev lists version v0.2.11, published April 3, 2024. · pkg.go.dev, 30 Sept 2026
- Platform and delivery
- The project is a Go module with module path github.com/leanovate/gopter and declares Go 1.20. · github.com, 2 Oct 2026
- Property testing
- It creates properties from condition functions and generated inputs. · github.com, 2 Oct 2026
- Purpose
- Gopter is a Go property-testing library that brings ideas from ScalaCheck and QuickCheck to Go. · github.com, 2 Oct 2026
- Regex generation
- It includes a generator for regular-expression matches. · github.com, 2 Oct 2026
- Regex support
- Gopter includes a generator for regex matches. · github.com, 30 Sept 2026
- Reporting
- Gopter provides console and formatted reporters for test results. · pkg.go.dev, 2 Oct 2026
- Shrinking
- Its shrinkers automatically seek a minimum value that falsifies a property. · github.com, 2 Oct 2026
- Stateful testing
- Gopter supports stateful tests. · github.com, 30 Sept 2026
- Stateful tests
- It supports stateful tests based on arbitrary commands. · github.com, 2 Oct 2026
- Support channel
- The project is hosted in a public GitHub repository with an Issues section. · github.com, 30 Sept 2026
- Testing integration
- Properties can be run with Go's testing.T through TestingRun. · pkg.go.dev, 2 Oct 2026
- Testing scope
- Gopter is described as a more sophisticated version of Go's testing/quick package. · github.com, 30 Sept 2026
Where Gopter stands on Freedom251
- Property-Based Testing Tools#4 of 28