Freedom251 › Unit Testing Frameworks
QuickCheck

What QuickCheck is
QuickCheck is a free, open-source Haskell library for testing program properties with randomly generated cases. Developers describe conditions that functions should satisfy, and QuickCheck checks those conditions against generated inputs. Combinators help define properties, inspect test-data distributions, and create generators. The library supports parameterized cases and property-based checks. Most functionality is available through Test.QuickCheck, while monadic property testing is provided by Test.QuickCheck.Monadic. To use it in tests or a REPL, add QuickCheck to package dependencies. The quickcheck-instances companion package supplies instances for types in Haskell Platform packages and adds dependencies. Package metadata lists base >=4.14 and <5 and containers as library dependencies. It is tested with GHC versions >= 8.10 and < 9.15, as well as Hugs. A repository make-hugs script creates a Hugs-compatible version and may help with other non-GHC implementations. The optional Template Haskell flag, enabled by default, builds Test.QuickCheck.All. QuickCheck uses the BSD3 license.
Who it suits
QuickCheck suits Haskell programmers who want randomized, property-based checks for functions and reusable test-data generators. It can be used from automated tests or a REPL.
What it does well
- Generates random cases for property checks
- Supports custom data generators
- Provides tools for examining data distributions
- Includes monadic property testing
- Works with GHC and Hugs versions listed
What to know first
- Supports Haskell only
- Requires adding it to package dependencies
- Monadic testing uses a separate module
Verdict
QuickCheck provides a focused property-testing toolkit for Haskell, with generators, distribution inspection, and multiple testing styles. Its language scope and compiler compatibility should fit the project before adoption.
Facts from QuickCheck's own pages
- Additional dependencies
- The package metadata lists base >=4.14 and <5 and containers as library dependencies. · github.com, 5 Oct 2026
- Companion package
- The quickcheck-instances companion package provides instances for types in Haskell Platform packages and adds dependencies. · github.com, 11 Oct 2026
- Compatibility
- The repository includes a make-hugs script for a Hugs-compatible version, which may also be useful for other non-GHC implementations. · github.com, 11 Oct 2026
- Compiler support
- The package metadata lists GHC versions from 8.10 up to but not including 9.15, and Hugs, as tested environments. · github.com, 11 Oct 2026
- How it works
- Programmers specify properties that functions should satisfy, and QuickCheck tests them against randomly generated cases. · github.com, 11 Oct 2026
- Hugs compatibility
- The repository includes a make-hugs script for creating a Hugs-compatible version, which may also be useful for other non-GHC implementations. · github.com, 5 Oct 2026
- License
- The package metadata identifies the license as BSD3. · github.com, 11 Oct 2026
- Maintainer
- The package metadata names Nick Smallbone as maintainer. · github.com, 11 Oct 2026
- Monadic testing
- The monadic property testing library is provided in the Test.QuickCheck.Monadic module. · github.com, 11 Oct 2026
- Optional feature
- The Template Haskell flag builds Test.QuickCheck.All and is enabled by default. · github.com, 5 Oct 2026
- Property tools
- QuickCheck provides combinators to define properties, observe test data distributions, and define test data generators. · github.com, 11 Oct 2026
- Purpose
- QuickCheck is a Haskell library for random testing of program properties. · github.com, 11 Oct 2026
- Support route
- The package metadata directs bug reports to the project's GitHub issues page. · github.com, 5 Oct 2026
- Test data
- QuickCheck provides combinators to define properties, observe test data distributions, and define test data generators. · github.com, 5 Oct 2026
- Use
- The README says to add QuickCheck to package dependencies to use it in tests or a REPL. · github.com, 5 Oct 2026
Where QuickCheck stands on Freedom251
- Unit Testing Frameworks#32 of 32
- Property-Based Testing Tools#28 of 28