PCUT is a very simple framework for unit testing of C code. Unlike many other frameworks where you need to specify manually which functions belong to a particular test, PCUT provides several smart macros that hides this and lets you focus on the most important part of testing only: that is, coding the test cases.
This mini-framework is definitely not complete but it offers the basic functionality needed for writing unit tests. This includes the possibility to group tests into test suites, optionally having set-up and tear-down functions. There are several assert macros for evaluating the results, their highlight is very detailed information about the problem.
The output of the test can come in two forms: either as an XML output suited for later processing or in the form of Test-Anything-Protocol. PCUT is able to capture standard output and display it together with test results. And by running each test in a separate process, the whole framework is pretty safe against unexpected crashes, such as null pointer dereference.
More details can be found on PCUT wiki on GitHub: https://github.com/vhotspur/pcut/wiki
The following code tests the standard atoi
function:
#include <pcut/pcut.h> #include <stdlib.h> PCUT_INIT PCUT_TEST(atoi_zero) { PCUT_ASSERT_INT_EQUALS(0, atoi("0")); } PCUT_TEST(atoi_positive) { PCUT_ASSERT_INT_EQUALS(42, atoi("42")); } PCUT_TEST(atoi_negative) { PCUT_ASSERT_INT_EQUALS(-273, atoi("-273")); } PCUT_MAIN()
As you can see, there is no manual listing of tests that form the test
suite etc, only the tests and PCUT_INIT
at the beginning and
PCUT_MAIN
at the end.
This code has to be linked with libpcut
to get an executable that runs
the tests and reports the results.
More examples, in the form of self-tests, are available in the tests/
subdirectory.
Other examples can be found on the Wiki.
PCUT uses CMake (http://www.cmake.org/). On Unix systems, following commands build the library and execute the built-in tests:
mkdir build cd build cmake .. && make all test
More details can be found on https://github.com/vhotspur/pcut/wiki/Building.