Skip to content
SPECIFICTION
Get listed

Property-Based Testing Tools

Alternatives to Racket QuickCheck

Racket QuickCheck lets Racket programmers express properties in ordinary Racket code and check them against randomly generated inputs. Its built-in generators cover integers, real numbers, characters, lists, vectors, strings, and symbols, while custom generators support domain-specific data. A failed property reports the arguments that falsified it, and RackUnit integration raises a RackUnit exception with test details. Runs default to 100 successful tests, with helpers for 1,000, 10,000, or custom counts. The free package runs on Linux, macOS, and Windows, but requires Racket 6.0 or newer and installation through Racket’s package tools.

  1. 01 fast-check

    It suits JavaScript and TypeScript developers who want to check behavior across generated inputs, including teams using different test runners.

    Free plan Open source Web · Linux · API · Self-hosted
    8.9 Visit Specs
  2. 02 Gopter

    Gopter suits Go developers who want property-based testing, generator control, shrinking, or stateful tests.

    Free plan Linux · Self-hosted
    8.6 Visit Specs
  3. 03 FsCheck

    FsCheck suits developers who want generated-input property checks for .NET programs, with properties written in F#, C# or VB.

    Free plan Windows · macOS · Linux
    8.4 Visit Specs
  4. 04 JSVerify

    It suits JavaScript developers who want generated inputs to check function properties, including asynchronous ones.

    Free plan Web · Self-hosted
    8.1 Visit Specs
  5. 05 CsCheck

    CsCheck suits C# developers who want generated, shrinkable tests, including stateful or concurrent testing.

    Free plan Self-hosted
    8.0 Visit Specs
  6. 06 PropCheck

    PropCheck suits Ruby developers who want to check assertions across generated inputs using RSpec, MiniTest, test-unit or vanilla Ruby.

    Free plan Linux · Self-hosted
    8.0 Visit Specs
  7. 07 ScalaCheck

    It suits Scala and Java developers who want to check program properties against randomized inputs.

    Free plan Windows · macOS · Linux
    8.0 Visit Specs
  8. 08 QCheck

    It suits OCaml developers who want to check properties over generated inputs, including teams using OUnit or Alcotest.

    Free plan Linux
    7.9 Visit Specs
  9. 09 QuickTheories

    QuickTheories suits Java developers testing broad properties and invariants rather than only hand-written examples.

    Free plan API · Self-hosted
    7.7 Visit Specs
  10. 10 Scala Hedgehog

    Scala developers who want property-based tests, including tests of stateful systems, may find Scala Hedgehog relevant.

    Free plan Linux
    7.7 Visit Specs
  11. 11 Eris
    Self-hosted
    7.6 Visit Specs
  12. 12 FSharp.Hedgehog
    Windows · macOS · Linux
    7.5 Visit Specs
  13. 13 PropEr

    PropEr suits Erlang developers testing pure functions, library modules, and stateful code.

    Free plan Self-hosted
    7.5 Visit Specs
  14. 14 Hypothesis

    Hypothesis suits Python developers who want tests to explore inputs and edge cases based on described behavior.

    Windows · macOS · Linux
    7.4 Visit Specs
  15. 15 QuickCheck

    QuickCheck suits Haskell developers who want to check properties across generated inputs, including stateful or monadic properties.

    Free plan Linux
    7.3 Visit Specs
  16. 16 Rantly
    Free plan Self-hosted
    7.3 Visit Specs
  17. 17 Rapid
    Free plan Self-hosted
    7.1 Visit Specs
  18. 18 jqwik
    7.0 Visit Specs
  19. 19 Proptest
    Web
    7.0 Visit Specs
  20. 20 RapidCheck
    Windows · Linux · Self-hosted
    7.0 Visit Specs
  21. 21 scalaprops

    Scalaprops suits Scala developers writing property-based tests, law checks, or Scalaz-integrated tests.

    Free plan Linux
    7.0 Visit Specs
  22. 22 StreamData
    Free plan API
    7.0 Visit Specs
  23. 23 test.check
    Free plan API
    6.9 Visit Specs
  24. 24 Plausible
    6.5 Visit Specs
  25. 25 QuickCheck
    6.5 Visit Specs
  26. 26 SwiftCheck
    macOS · iOS
    6.5 Visit Specs
  27. 27 SmallCheck
    5.1 Visit Specs

Choosing instead of Racket QuickCheck

Readers may switch for another programming language, automatic failure shrinking, broader test-runner integration, asynchronous checks, or stateful testing. QuickCheck does not shrink failing cases, and its workflow remains tied to the Racket runtime and RackUnit ecosystem. Compare each alternative’s language, generator controls, counterexample handling, runner integrations, platform coverage, and any asynchronous or stateful features. The better choice depends on whether your existing code and test workflow fit Racket or another ecosystem more closely.

Racket QuickCheck, head to head