Skip to content
SPECIFICTION
Get listed

Property-Based Testing Tools

Alternatives to Racket QuickCheck

{"intro": "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.\n\nReaders 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.", "rows": [{"ref": "sw:scalacheck", "name": "ScalaCheck", "best_for": "Scala and Java property testing", "pricing": "Free plan", "key_difference": "ScalaCheck targets Scala and Java, integrates with several Scala test frameworks, and can run standalone instead of using Racket and RackUnit.", "choose_when": "Choose it when your properties live in Scala or Java and sbt, ScalaTest, specs2, or LambdaTest fit your workflow."}, {"ref": "sw:fscheck", "name": "FsCheck", "best_for": ".NET properties in F#, C#, or VB", "pricing": "Free plan", "key_difference": "FsCheck supports F#, C#, and VB, provides minimal counterexamples with shrinkers, and integrates with .NET runners rather than Racket.", "choose_when": "Choose it when .NET language support, minimal counterexamples, or xUnit.net and NUnit integration matter more than Racket compatibility."}, {"ref": "sw:gopter", "name": "Gopter", "best_for": "Go property and stateful testing", "pricing": "Free plan", "key_difference": "Gopter brings ScalaCheck-style testing to Go with tighter generator control, automatic shrinking, regex generators, and stateful tests.", "choose_when": "Choose it when Go code needs stateful tests, regex-generated values, or minimum-value shrinking unavailable in Racket QuickCheck."}, {"ref": "sw:jsverify", "name": "JSVerify", "best_for": "JavaScript properties, including async functions", "pricing": "Free plan", "key_difference": "JSVerify targets JavaScript, supports Promise-returning properties, framework-agnostic runners, shrinking, and deterministic random states.", "choose_when": "Choose it when JavaScript or asynchronous properties and integration with Mocha, nodeunit, or Jasmine are central."}, {"ref": "sw:hypothesis-property-based-testing-tool", "name": "Hypothesis", "best_for": "Python testing with replayable failures", "pricing": "Free plan", "key_difference": "Hypothesis targets Python, simplifies failures, stores examples for replay, and generates state-machine operation sequences inside existing test frameworks.", "choose_when": "Choose it when Python, replayable failures, stateful testing, or pytest and unittest integration outweighs having a standalone runner."}, {"ref": "sw:propcheck", "name": "PropCheck", "best_for": "Ruby property testing with RSpec or MiniTest", "pricing": "Free plan", "key_difference": "PropCheck targets Ruby, shrinks failures, offers Ruby-specific generators and setup hooks, and requires no external dependencies.", "choose_when": "Choose it when Ruby projects need custom generators, lifecycle hooks, shrinking, or RSpec, MiniTest, test-unit, and vanilla Ruby usage."}, {"ref": "sw:qcheck", "name": "QCheck", "best_for": "OCaml property testing with integrated shrinking", "pricing": "Free plan", "key_difference": "QCheck targets OCaml, integrates with OUnit and Alcotest, includes built-in shrinking, and offers sequential and parallel model-based testing.", "choose_when": "Choose it when OCaml packages, integrated shrinkers, or model-based concurrency testing fit your project better than Racket."}]}

  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

Racket QuickCheck, head to head