cmocka

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

Development

git clone git://git.cryptomilk.org/projects/cmocka.git


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.

News


cmocka 1.0.1
2015-02-16
We released version 1.0.1 to fix some smaller issues of the last release.


cmocka 1.0.0
2015-02-16
We are proud to announce version 1.0 of cmocka. This release includes new features like a new test runner with support for group fixtures. We also added more message output formats like Subunit, Test Anything Protocol and jUnit XML reports.

Projects using cmocka


cwrap - Full server/client testing made easy

libssh - The SSH library

Knot DNS - High-performance DNS server

SSSD - Security System Service Daemon

Elasto Cloud - a cloud storage client

Profanity - a console based XMPP chat client

ownCloud Client - a tool to keep files in sync

Discussion