QuickTheories vs Racket QuickCheck
QuickTheories
github.comRacket QuickCheck
docs.racket-lang.orgSide by side
| Figure | QuickTheories | Racket QuickCheck |
|---|---|---|
| Price from | Free | Free |
| Free plan | Yes | Yes |
| Free trial | — | — |
| Open source | — | — |
| Windows | — | Yes |
| macOS | — | Yes |
| Linux | — | Yes |
| API | Yes | — |
| Self-hosted | Yes | — |
| Plans published | 1 | 1 |
| Spec score · Property-Based Testing Tools | 7.7 (#10) | 8.2 (#4) |
| Generators | Its generator DSL can create common Java types, constrain generated values, and combine or convert generators for custom types. | Built-in generators cover values including integers, real numbers, characters, lists, vectors, strings, and symbols. |
| Purpose | QuickTheories is a property based testing library for Java 8, described as a Java version of QuickCheck. | Quickcheck tests program specifications by running properties against randomly generated test inputs. |
Plans
In their own words
QuickTheories
QuickTheories is a free, open-source property-based testing library for Java 8. It checks general properties and invariants by generating random valid inputs, then automatically searches for smaller or simpler values that still fail a property. The library reports the seed for a falsified property, and tests can use fixed seeds for deterministic runs. Its generator DSL creates common Java types, constrains values, and combines or converts generators for custom types. QuickTheories works with JUnit, TestNG, and other test frameworks; `checkAssert` supports assertion libraries such as AssertJ and Hamcrest. The `forAll` API handles theories over one to four generated values. System properties configure seeds, example counts, and shrink attempts, while named profiles can reuse settings. An experimental coverage feature targets new code paths, but may reduce performance by about 10% and interfere with JaCoCo or other coverage systems. The project uses the Apache-2.0 license.
Racket QuickCheck
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.