Racket QuickCheck
docs.racket-lang.org
What it is
Racket QuickCheck is a free package for checking program properties with generated inputs. A property is written as ordinary Racket code, and the package runs it against generated values; if a check fails, it reports a counterexample and the arguments that produced it. Its default configuration runs 100 successful tests, and helpers allow counts of 1,000, 10,000, or a custom number. Built-in generators cover integers, real numbers, characters, lists, vectors, strings, and symbols, and custom generators are supported. The `rackunit/quickcheck` integration raises a RackUnit exception when a check fails and includes the test count and counterexample arguments. Install the package with `raco pkg install quickcheck` or through DrRacket’s GUI package manager. It requires Racket v6.0 or newer. Racket provides installers for Linux, macOS, and Windows. The package listing reports a successful build and passing tests, while also noting missing license metadata. The listed price is free.
Spec sheet
- Purpose
- Quickcheck tests program specifications by running properties against randomly generated test inputs.Read 9 Oct 2026 · docs.racket-lang.org
- Intended users
- The documented workflow is for Racket programmers who want to test program properties with generated inputs.Read 9 Oct 2026 · docs.racket-lang.org
- Authors
- The package index lists Ismael Figueroa and Michael Sperber as authors.Read 9 Oct 2026 · pkgs.racket-lang.org
- Build status
- The package index reports that the latest listed build compiled successfully and its tests succeeded.Read 9 Oct 2026 · pkgs.racket-lang.org
- Counterexamples
- When a property fails, Quickcheck prints the arguments that falsified it along with other result information.Read 9 Oct 2026 · docs.racket-lang.org
- Custom generators
- The library supports custom generators and includes generators for values such as integers, real numbers, characters, lists, vectors, strings, and symbols.Read 9 Oct 2026 · docs.racket-lang.org
- Default test count
- The default configuration runs 100 tests, and the documentation provides settings for 1,000 and 10,000 tests.Read 9 Oct 2026 · docs.racket-lang.org
- Generators
- Built-in generators cover values including integers, real numbers, characters, lists, vectors, strings, and symbols.Read 9 Oct 2026 · docs.racket-lang.org
- Installation
- Install the package with `raco pkg install quickcheck` or through DrRacket’s GUI package manager.Read 9 Oct 2026 · docs.racket-lang.org
- Minimum version
- The package requires Racket v6.0 or newer.Read 9 Oct 2026 · docs.racket-lang.org
- Package authors
- The package listing names Ismael Figueroa and Mike Sperber as authors.Read 9 Oct 2026 · pkgs.racket-lang.org
- Package dependencies
- The package index lists base, rackunit, doc-coverage, scribble-lib, and racket-doc as dependencies.Read 9 Oct 2026 · pkgs.racket-lang.org
- Package metadata
- The package index describes Quickcheck as a clone and shows missing license metadata.Read 9 Oct 2026 · pkgs.racket-lang.org
- Package status
- The Racket Package Index lists the package build as successful and its tests as passing, and notes missing license metadata.Read 9 Oct 2026 · pkgs.racket-lang.org
- Platform options
- Racket’s download page lists Windows x64 and Arm, macOS Intel and Apple Silicon, and several Linux architectures.Read 9 Oct 2026 · download.racket-lang.org
- Property checks
- A property expresses a program specification in ordinary Racket code, and Quickcheck reports a counterexample if a check fails.Read 9 Oct 2026 · docs.racket-lang.org
- Property testing
- Properties are written in ordinary Racket code and checked against generated values.Read 9 Oct 2026 · docs.racket-lang.org
- Racket requirement
- The package requires Racket v6.0 or newer.Read 9 Oct 2026 · docs.racket-lang.org
- RackUnit integration
- The `rackunit/quickcheck` integration raises a RackUnit exception on failure and includes the test count and counterexample arguments.Read 9 Oct 2026 · docs.racket-lang.org
- Support and community
- The Racket site identifies Discourse and Discord as active community spaces and also lists Slack, Reddit, and mailing lists.Read 9 Oct 2026 · racket-lang.org
- Supported platforms
- The package listing says its build platform is any platform; Racket offers installers for Windows, macOS, and Linux.Read 9 Oct 2026 · pkgs.racket-lang.org
- Test configuration
- The default configuration runs 100 successful tests, and helpers set counts of 1,000 or 10,000 tests or a custom count.Read 9 Oct 2026 · docs.racket-lang.org
Plans and prices
Strong points and limits
Strong points
- Custom and built-in generators are supported.
- Can report counterexamples when properties fail.
- Offers test counts up to 10,000 through helpers.
- Integrates with RackUnit.
Limits
- Requires Racket v6.0 or newer.
- Package listing notes missing license metadata.
- Failing-case shrinking is not supported.
Who it suits
QuickCheck suits Racket programmers who want to test program properties against generated values. It also fits workflows using RackUnit for failure reporting.
Racket QuickCheck in depth
Read the full write-up
Racket QuickCheck is a property-testing library that checks Racket programs against generated inputs. It is best suited to Racket developers who want to express expected behavior as code and run it through RackUnit. Its useful generators and counterexample reports make it a focused testing option, though failures are not shrunk to simpler cases.
Overview
Instead of relying only on manually selected examples, a property describes what a program should do and QuickCheck runs that property against generated values. When a check fails, it reports the arguments that falsified it, giving a developer a concrete case to investigate. This is a practical complement to example-based tests, not a guarantee of exhaustive input coverage.
Key features
Properties are ordinary Racket code, keeping the specification in the same language as the program under test. QuickCheck runs 100 successful tests by default; helpers allow 1,000, 10,000, or a custom number. Larger runs give a property more generated cases to examine, but the library still samples inputs rather than proving the property for every possible value.
Built-in generators cover integers, real numbers, characters, lists, vectors, strings, and symbols. Custom generators let developers extend that range for application-specific values. The combination is useful for testing both common data and domain structures, while the absence of failing-case shrinking means a reported counterexample may take more work to diagnose than a reduced example would.
The rackunit/quickcheck integration raises a RackUnit exception when a property fails and includes the test count and counterexample arguments. Projects already using RackUnit can therefore bring property checks into that testing workflow. Installation is through raco pkg install quickcheck or DrRacket’s GUI package manager. The package requires Racket v6.0 or newer, so older installations are not a fit.
Pricing
QuickCheck is free: its plan costs nothing and provides the Racket package, subject to the Racket v6.0 minimum. There is no paid tier or free trial to weigh against it. For an eligible Racket project, cost is not a reason to choose a different testing library; language fit and the lack of shrinking matter more.
Platforms
The package supports Racket, and Racket offers installers for Windows, macOS, and Linux. Its download options include Windows x64 and Arm, macOS Intel and Apple Silicon, and several Linux architectures. Platform choice follows the Racket installation rather than a separate QuickCheck application.
Who it's for
QuickCheck suits Racket programmers who want generated-input checks in ordinary Racket code, especially teams whose tests already use RackUnit. It is less compelling when a workflow depends on shrinking a failing input to a minimal example, or when the project is not written in Racket. The package index reports a successful latest build and passing tests, but also notes missing license metadata; teams that require clear license metadata should account for that before adoption.
Pros and cons
Pro: Ordinary Racket properties and built-in plus custom generators let developers test a range of values without leaving their language.
Pro: Counterexample arguments and RackUnit failure integration give a useful starting point for debugging within an existing test workflow.
Pro: Configurable test counts go beyond the default 100 successful checks when a property warrants more sampling.
Con: Failing cases are not shrunk, so complex counterexamples can be harder to understand and reproduce than minimized ones.
Con: Racket v6.0 or newer is required, excluding older environments.
Con: The package index notes missing license metadata, a consideration for teams with license-review requirements.
Alternatives
For another free property-testing library, Property-Based Testing Tools is a useful starting point for comparing options. Choose by the language and workflow your project already uses:
ScalaCheck is a free BSD-3-Clause library for Linux, macOS, and Windows; consider it for a Scala-oriented project.
FsCheck is a free BSD-licensed library distributed through NuGet packages, for a project better served by that package route.
Gopter is a free MIT-licensed Go property-testing library, suited to Go projects.
JSVerify is a free open-source JavaScript property-based testing library for JavaScript projects.
Hypothesis is another free option available on Linux, macOS, and Windows.
PropCheck is a free MIT-licensed Ruby gem requiring Ruby 2.5.1 or newer, for Ruby projects.
QCheck is a free BSD-2-Clause OCaml property-testing library for Linux, for OCaml projects.
fast-check is a free MIT-licensed JavaScript/TypeScript option, for projects using those languages.
Verdict
Choose Racket QuickCheck if you write Racket, want generated cases expressed through ordinary properties, and value RackUnit integration at no cost. Its central advantage is a compact Racket-native workflow with configurable sampling and actionable counterexamples. Look elsewhere if shrinking failing cases is important to your debugging process, or if your project uses another language.
Verdict
QuickCheck provides property testing with generated inputs and counterexample reporting for Racket programs. Its version requirement and lack of failing-case shrinking are worth considering when choosing a testing workflow.
Where Specifiction places it
- Property-Based Testing Tools#4 of 288.2