FREEDOM251

Freedom251 › Property-Based Testing Tools

RapidCheck

Free plan LinuxSelf-hostedWindows

Visit RapidCheck Alternatives

RapidCheck's own site

What RapidCheck is

RapidCheck is a free C++ framework for property-based testing. It generates inputs and repeatedly runs properties to look for cases that disprove them; developers provide properties as callables passed to rc::check. Built-in generators cover common types, and combinators can be used to build custom ones. Its arbitrary-value generation includes standard types such as vectors, maps, sets, tuples, pairs, strings and chrono types. When a property fails, RapidCheck attempts to shrink the failing input and report a smaller counterexample. It also supports stateful testing by generating sequences of valid operations. Listed test-library integrations include Boost Test, Google Test, Google Mock and Catch. By default, a property passes after 100 successful tests, and that number is configurable. RapidCheck uses CMake, can be added as a subdirectory to a CMake project, and requires a C++11-compliant compiler. The project uses a BSD 2-Clause license. Its user guide is still in progress, with some parts missing, and notes that the API is not stable and may change.

Who it suits

RapidCheck is for C++ developers who want generated-input property tests, shrinking of failures or stateful testing. It requires a C++11-compliant compiler and uses CMake.

What it does well

  • Generates random inputs to search for failing cases.
  • Shrinks failures into smaller counterexamples.
  • Supports stateful testing sequences.
  • Integrates with several test libraries.
  • BSD 2-Clause license.

What to know first

  • The user guide is incomplete.
  • The API may change.
  • Requires a C++11-compliant compiler.

Limits

RapidCheck’s documentation is unfinished, and its API may change because it has not stabilized. Properties pass after 100 successful tests by default unless that count is changed.

Getting started

  1. Open the RapidCheck repository at https://github.com/emil-e/rapidcheck
  2. Use a Linux, Windows, or self-hosted environment
  3. Add RapidCheck as a subdirectory in a CMake project
  4. Build with a C++11-compliant compiler
  5. Define properties as callables passed to rc::check
  6. Run the properties with generated inputs and configured test counts

Verdict

RapidCheck provides property-based and stateful testing with input generation and failure shrinking. Developers should account for its unfinished documentation and unstable API.

Questions

What language does RapidCheck support?

RapidCheck is a framework for C++ and requires a C++11-compliant compiler.

Is RapidCheck free?

Yes. It is listed as free with a free plan and no free trial.

Which test libraries integrate with RapidCheck?

Listed integrations include Boost Test, Google Test, Google Mock, and Catch.

How many successful tests are run by default?

A property passes by default after 100 successful tests, and the number is configurable.

What license does RapidCheck use?

RapidCheck is distributed under a BSD 2-Clause license.

What happens when a property fails?

RapidCheck tries to shrink the failing input and displays a smaller counterexample.

Facts from RapidCheck's own pages

API stability
The User Guide says the API has not stabilized and may change at any time. · github.com, 30 Sept 2026
Build
RapidCheck uses CMake and can be added as a subdirectory to a CMake project. · github.com, 30 Sept 2026
Build requirements
RapidCheck uses CMake and requires a C++11-compliant compiler; the README lists Clang 3.5, GCC 4.9 and Visual Studio 2015 as CI compiler versions. · github.com, 30 Sept 2026
Catch integration
RapidCheck also documents basic integration with the Catch test library. · github.com, 30 Sept 2026
Counterexamples
When it finds a failing case, RapidCheck tries to shrink it to a smaller counterexample. · github.com, 30 Sept 2026
Documentation status
The User Guide says it is a work in progress and that some parts are still missing. · github.com, 30 Sept 2026
Features
The README lists imperative property definitions, test case shrinking, STL support including maps and sets, and combinators for creating generators. · github.com, 30 Sept 2026
Generators
RapidCheck includes generators for common types and combinators for building custom generators. · github.com, 30 Sept 2026
Integrations
The README lists integrations with Boost Test, Google Test and Google Mock. · github.com, 30 Sept 2026
License
The repository identifies its license as BSD-2-Clause. · github.com, 30 Sept 2026
Limitations
The user guide says it is a work in progress, and the API has not stabilized and may change at any time. · github.com, 30 Sept 2026
Property checks
Properties are implemented as callables passed to rc::check, and RapidCheck repeatedly calls them with generated inputs. · github.com, 30 Sept 2026
Purpose
RapidCheck is a C++ framework for property-based testing inspired by QuickCheck and similar frameworks. · github.com, 30 Sept 2026
Requirements
RapidCheck uses C++11 and requires a compliant compiler. · github.com, 30 Sept 2026
Shrinking
When a property fails, RapidCheck tries to find the smallest failing test case and displays it as a counterexample. · github.com, 30 Sept 2026
Stateful testing
The README describes stateful testing based on commands in the style of Erlang QuickCheck. · github.com, 30 Sept 2026
STL support
Built-in arbitrary-value generation supports types including vectors, maps, sets, tuples, pairs, strings and chrono types. · github.com, 30 Sept 2026
Test defaults
A property passes by default after 100 successful tests, and the number is configurable. · github.com, 30 Sept 2026
Test generation
It generates random test data to search for inputs that falsify a property. · github.com, 30 Sept 2026
What it does
RapidCheck is a C++ framework for property-based testing that generates random test data to find counterexamples to properties. · github.com, 30 Sept 2026

Where RapidCheck stands on Freedom251

Look at these too