Scala Hedgehog
hedgehogqa.github.io
What it is
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.
Spec sheet
- Purpose
- Scala Hedgehog is a property-based testing system for Scala, in the spirit of QuickCheck and ScalaCheck.Read 4 Oct 2026 · hedgehogqa.github.io
- Intended users
- The project is for Scala developers who want property-based tests, including tests of stateful systems.Read 4 Oct 2026 · hedgehogqa.github.io
- Automatic shrinking
- Integrated shrinking simplifies failing test cases while preserving the invariants of generated values.Read 4 Oct 2026 · hedgehogqa.github.io
- Availability
- The project documents binary dependencies published through Maven Central, including core, runner, SBT, Minitest, and MUnit modules.Read 4 Oct 2026 · hedgehogqa.github.io
- Build tools
- The getting-started documentation assumes SBT and says Hedgehog is also supported for Gradle through a Scala plugin.Read 4 Oct 2026 · hedgehogqa.github.io
- Core dependencies
- The core module currently has no external dependencies.Read 4 Oct 2026 · hedgehogqa.github.io
- Generator control
- Range combinators control the scope of generated numbers and collections.Read 4 Oct 2026 · hedgehogqa.github.io
- IDE limitation
- The docs say the IntelliJ Scala plugin does not include Hedgehog among its hard-coded supported test frameworks; tests can be run as applications by extending Properties, with the test defined as an object.Read 4 Oct 2026 · hedgehogqa.github.io
- Integrated shrinking
- Its integrated shrinkers compose with generators, so shrunk values preserve their invariants by construction.Read 4 Oct 2026 · hedgehogqa.github.io
- IntelliJ limitation
- The docs say IntelliJ's Scala plugin does not list Hedgehog among its hard-coded supported test frameworks, and explain how to run Properties tests as an application instead.Read 4 Oct 2026 · hedgehogqa.github.io
- Minitest integration
- Scala Hedgehog lists Minitest as an available integration module.Read 4 Oct 2026 · hedgehogqa.github.io
- MUnit integration
- The hedgehog-munit module supports property-based and example-based Hedgehog tests in an MUnit test suite.Read 4 Oct 2026 · hedgehogqa.github.io
- Range controls
- Range combinators control the scope of generated numbers and collections.Read 4 Oct 2026 · hedgehogqa.github.io
- Release status
- The project describes itself as in an early release and says its API may break until wider adoption.Read 4 Oct 2026 · hedgehogqa.github.io
- SBT runner
- Hedgehog provides an sbt testing extension; sbt 1.9.1 and higher support it by default, while versions 1.9.0 and lower require a testFrameworks setting.Read 4 Oct 2026 · hedgehogqa.github.io
- Scala compatibility
- The documentation lists support for Scala 2.12, 2.13, and 3.3+.Read 4 Oct 2026 · hedgehogqa.github.io
- Scala versions
- The documented supported Scala versions are 2.12, 2.13, and 3.3+.Read 4 Oct 2026 · hedgehogqa.github.io
- State testing
- It supports abstract state machine testing for stateful systems.Read 4 Oct 2026 · hedgehogqa.github.io
- Stateful testing
- It supports abstract state machine testing for stateful systems such as web services and database layers.Read 4 Oct 2026 · hedgehogqa.github.io
- Test integrations
- Integration modules are available for Minitest and MUnit.Read 4 Oct 2026 · hedgehogqa.github.io
- Test runner
- The project includes an SBT test runner and supports SBT's testing extension.Read 4 Oct 2026 · hedgehogqa.github.io
Plans and prices
Strong points and limits
Strong points
- Shrinking preserves generated values’ invariants
- Supports abstract state machine testing
- Integrates with SBT, Minitest and MUnit
- Core module has no external dependencies
Limits
- Project describes its release as early
- API may change before wider adoption
- IntelliJ Scala plugin lacks built-in test framework support
Who it suits
Scala developers who want property-based tests, including tests of stateful systems, may find Scala Hedgehog relevant. It is suited to projects using SBT, Minitest or MUnit, with Gradle support documented through a Scala plugin.
Verdict
Scala Hedgehog provides property-based and stateful testing features, with integrations for several Scala testing setups. Its early-release status and IntelliJ limitation are worth considering before adopting it.
Where Specifiction places it
- Property-Based Testing Tools#11 of 287.7