an elegant unit testing framework for C with support for
mock objects. It only requires the standard C library,
works on a range of computing platforms (including embedded) and with
The goal of this project is to provide a powerful testing
framework for C, on different platforms and operating
systems, which only requires the standard C library.
Support for Mock Objects
Mock objects are simulation objects to mimic the real
implementation of an actual object. Useful to simulate
dependencies of an interface to help test the interface
in isolation. Some project use the mock functionality to
simulate components communicating over a network
Only requires a C library
This makes it possible that cmocka works on many of
Several supported output formats
cmocka supports several different message output formats
like Test Anything Protocol, Subunit, xUnit XML or the original
Fully documented API
The API is very well
documented and cmocka provides several examples for the
different features it provides
Test fixtures are setup and teardown functions that can
be shared across multiple test cases to provide common
functions that prepare the test environment and destroy
Exception handling for signals (SIGSEGV, SIGILL, ...)
cmocka is able to recover the test state if there are
exceptions like a segfault.
cmocka doesn't use fork() for exception handling in test cases.
Very well tested
cmocka has nightly builds to test on several platforms
and with different compilers to ensure it works
correctly. If you want to get it working on your
platform you can add a nightly build and we will make
sure not to break your platform or compiler.
Testing of memory leaks, buffer overflows and underflows.
We offer functions during test which are able to detect
some sort of memory allocation issues without running
tools like valgrind.
cmockery legacy support
cmocka is a fork and the successor for
We offer the installation of a cmockery header so that
your tests written for cmockery are still working till
you migrate to cmocka.
Platforms and compilers
cmocka works well on Linux, BSD, Solaris, Windows and
embedded platforms. It is known to be working with GCC,
LLVM, MSVC, MinGW and many more.