Hypothesis vs Scala Hedgehog
Hypothesis
hypothesis.worksScala Hedgehog
hedgehogqa.github.ioSide by side
| Figure | Hypothesis | Scala Hedgehog |
|---|---|---|
| Price from | — | Free |
| Free plan | — | Yes |
| Free trial | — | — |
| Open source | — | — |
| Windows | Yes | — |
| macOS | Yes | — |
| Linux | Yes | Yes |
| Plans published | 0 | 1 |
| Spec score · Property-Based Testing Tools | 7.4 (#15) | 7.7 (#11) |
| Intended users | Hypothesis is for people writing software tests who want to describe acceptable behavior and have the computer explore inputs. | The project is for Scala developers who want property-based tests, including tests of stateful systems. |
| Stateful testing | Rule-based state machines let Hypothesis generate sequences of operations to test stateful systems and objects. | It supports abstract state machine testing for stateful systems such as web services and database layers. |
Plans
In their own words
Hypothesis
Hypothesis is a free property-based testing library for Python. You describe behavior that your code should satisfy, and it generates inputs—including edge cases—to explore whether those properties hold. Strategies let you define and combine the data used in tests. When a failure appears, Hypothesis reports an example and tries to simplify it; failing examples are stored in a local test database for replay in later runs. Tests run as ordinary Python functions within pytest, unittest, nose, or another framework that can run a Python function. Hypothesis is not itself a test runner. By default, it generates 100 random inputs per test, and max_examples controls that count. Rule-based state machines can generate sequences of operations for testing stateful systems and objects. The project supports and tests CPython and PyPy 3.10 and later, and says it regularly works on Linux, macOS, Windows, and Emscripten. Its compatibility policy supports only the newest Hypothesis version; undocumented behavior may change in patch releases.
Scala Hedgehog
Scala Hedgehog is a property-based testing system for Scala that generates values to check properties and can simplify failing cases while preserving the generated values’ invariants. Range combinators let developers set the scope of generated numbers and collections. For stateful software, its abstract state machine testing can model systems such as web services and database layers. The project includes an SBT test runner and integration modules for Minitest and MUnit; its documentation also describes Gradle support through a Scala plugin. Documented Scala versions are 2.12, 2.13 and 3.3 or later. Binary dependencies for its modules are published through Maven Central, and the core module has no external dependencies. Scala Hedgehog is free, with no paid plans listed. The project describes its release as early and says its API may change before wider adoption. IntelliJ’s Scala plugin does not list Hedgehog among its built-in test frameworks, though Properties tests can be run as applications. The getting-started documentation assumes SBT; SBT 1.9.1 and later support the testing extension by default, while earlier versions require a testFrameworks setting.