FREEDOM251

Freedom251 › Property-Based Testing Tools

test.check

Free plan API

Visit test.check Alternatives Pricing

test.check's own site

What test.check is

test.check is a free property-based testing tool for Clojure and ClojureScript. Developers define properties expected to hold across inputs, and the tool generates values to check them instead of relying only on individually enumerated test cases. When a property fails, test.check tries to reduce the failing input to a smaller example, including for custom generators. It includes built-in generators and combinators for compound and recursive generators, and its documentation demonstrates sampling values and creating a lazy sequence of samples. The project provides dependency instructions for Clojure CLI with deps.edn, Leiningen, and Maven. The repository lists 1.1.3 as the latest stable version. Version 0.9.0 and later requires Clojure 1.7.0 or newer; the repository also flags a breaking change for ClojureScript in the 0.8.* releases. It supports the clojure.test and cljs.test runners, with reproducible failures. test.check is distributed under the Eclipse Public License, the same license as Clojure.

Who it suits

It suits Clojure and ClojureScript developers who want generated inputs to check properties and shrink failing cases. It supports clojure.test and cljs.test.

What it does well

  • Generates inputs for property-based tests.
  • Shrinks failing cases, including custom-generator cases.
  • Includes compound and recursive generator tools.
  • Supports clojure.test and cljs.test.
  • Free and open source.

What to know first

  • Version 0.9.0 and later requires Clojure 1.7.0 or newer.
  • The 0.8.* releases include a ClojureScript breaking change.

Plans

PlanBilled and limitsPrice
Free and open sourceDistributed under the Eclipse Public LicenseFree

As github.com lists them, read 8 Oct 2026. The maker's own page has the final word.

Getting started

  1. Open the project repository at https://github.com/clojure/test.check
  2. Choose dependency instructions for Clojure CLI/deps.edn, Leiningen, or Maven
  3. Add test.check to the project
  4. Use its generators and properties with clojure.test or cljs.test

Verdict

test.check offers property-based testing, input generation, and shrinking for Clojure and ClojureScript projects. Check the stated Clojure requirement and ClojureScript release note before adopting it.

Questions

How much does test.check cost?

It is free, with a listed plan price of $0.

Which languages and test runners does it support?

It supports Clojure and ClojureScript, with clojure.test and cljs.test runner support.

Does test.check shrink failing inputs?

Yes. It automatically looks for smaller failing inputs, including inputs from custom generators.

What Clojure version is required?

The repository says version 0.9.0 and later requires Clojure 1.7.0 or newer.

What license does it use?

It is distributed under the Eclipse Public License, the same license as Clojure.

Facts from test.check's own pages

Automatic shrinking
When a property fails, test.check automatically tries to find smaller failing inputs, including for custom generators. · github.com, 8 Oct 2026
Clojure requirement
The repository states that version 0.9.0 and later requires Clojure 1.7.0 or newer. · github.com, 8 Oct 2026
ClojureScript note
The repository flags a breaking change for ClojureScript in the 0.8.* releases. · github.com, 8 Oct 2026
Contributors
The repository credits Rich Hickey, Reid Draper, and contributors. · github.com, 8 Oct 2026
Current documented version
The repository lists 1.1.3 as its latest and stable version. · github.com, 8 Oct 2026
Generators
It includes built-in generators and combinators for creating generators, including compound and recursive generators. · github.com, 8 Oct 2026
License
The project is distributed under the Eclipse Public License, the same license as Clojure. · github.com, 8 Oct 2026
Property testing
It lets developers state properties that should hold for all inputs instead of enumerating individual unit-test inputs and outputs. · github.com, 8 Oct 2026
Purpose
test.check is a Clojure property-based testing tool inspired by QuickCheck. · github.com, 8 Oct 2026
Related libraries
The repository lists test.chuck, collection-check, and herbert as useful libraries. · github.com, 8 Oct 2026
Sampling
The documentation demonstrates sampling generated values and producing a lazy sequence of samples. · github.com, 8 Oct 2026
Usage
The project provides dependency instructions for Clojure CLI/deps.edn, Leiningen, and Maven. · github.com, 8 Oct 2026

Where test.check stands on Freedom251

Look at these too