cmocka is ...

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 different compilers.

Download here   Learn more   API

Mission Statement

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 embedded platforms.

Several supported output formats
cmocka supports several different message output formats like Test Anything Protocol, Subunit, xUnit XML or the original cmockery output format

Fully documented API
The API is very well documented and cmocka provides several examples for the different features it provides

Test Fixtures
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 it afterwards.

Exception handling for signals (SIGSEGV, SIGILL, ...)
cmocka is able to recover the test state if there are exceptions like a segfault.

No fork()
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 cmockery. 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.
License: Apache License 2.0


git clone

Gitlab   Browse GIT   Report Bugs

cmocka is an open source project, feel free to use it, share with love, if you want to collaborate just contact us.


cmocka 1.1.6
Version 1.1.6 has been released to fix several issues and a few small new features.

cmocka 1.1.5
Version 1.1.5 has been released with a set of new assert functions and a function to skip tests.

Projects using cmocka

cwrap - Full server/client testing made easy

Samba - Samba is the standard Windows interoperability suite of programs for Linux and Unix.

libssh - The SSH library

coreboot - Fast, secure and flexible OpenSource firmware

BIND DNS - Versatile, Classic, Complete Name Server Software

OpenVPN - software for private tunnels (VPN)

Knot DNS - High-performance DNS server

SSSD - Security System Service Daemon

Elasto Cloud - a cloud storage client

Profanity - a console based XMPP chat client

libomemo - a C library impelementing OMEMO

Netdata - realtime monitoring for servers

Automerge - a library for building collaborative applications