test.check review
A focused library for generated properties, shrinking, and reproducible failures.
Reviewed by iTechGuides Editors · Editorial team · Updated Oct 2026
test.check is an open-source property-based testing library for Clojure and ClojureScript projects. It lets developers express universal properties that should hold across generated inputs, rather than writing only individual examples. Built-in generators cover common Clojure values, while generator combinators support custom data generation. The library integrates with clojure.test and cljs.test through defspec, making it a focused option for teams already working within those test frameworks.
Pricing is straightforward: test.check is open source and has a free plan. There are no paid tiers to compare, so the available capabilities center on the library itself rather than on feature differences between subscription levels. It is distributed as a project dependency through Clojure CLI, Leiningen, or Maven. Teams choosing it should be comfortable adding a library dependency and defining properties alongside their existing Clojure or ClojureScript tests.
Its standout capability is the combination of generated inputs, automatic shrinking, configurable test counts and maximum generated-value size, and seed-based replay. When a generated case fails, shrinking can automatically reduce it to a smaller failing example, while seed replay supports reproducing the test run. These features make test.check a good fit for teams seeking focused property-based coverage in Clojure ecosystems. It is less suitable for organizations seeking a broader multi-language tool or a solution with verified stateful testing. Choose it when generator-driven tests and reproducible failures are central requirements; consider an alternative when testing needs extend beyond its language and feature scope.
test.check pros and cons
- Where it wins
- Built-in generators and composable combinators for custom data
- Automatic shrinking helps reduce failing generated cases
- Seed replay and clojure.test and cljs.test integration
- Where it doesn't
- Focused on Clojure and ClojureScript
- Stateful testing is not part of its described scope
- No paid tiers for differentiated feature levels
test.check fact sheet, pricing and score →
Advertiser disclosure: iTechGuides is reader-supported. Vendors can pay for top positions in our rankings and for a place on other products' pages, and we may earn a commission when you click some links. Bought places stand at the number bought; this page and our disclosure say so. Paying vendors may get a fuller, more detailed review from our editors, and that review can change their score. How we rank.
Last updated · How we research and update