|
kaycxx-test
C++ unit test framework
|
C++ unit test framework with hierarchical suites, lifecycle hooks, skipping, test filtering, and CTest discovery.
Tests are declared with one top-level suite, nested describe blocks, and it test cases. The linked test library provides main() and runs every registered suite.
The assertion functions are part of kaycxx::test and are included by <kaycxx/test.hpp>. Tests can also use another exception-based assertion library. An exception that leaves a test body is reported as a failed test, while kaycxx::test::assertion_error additionally preserves rendered actual and expected values and remains a normal reported failure in break-on-exception mode.
CMake users consume the installed package with:
No separate main.cpp is needed for the test executable.
Non-CMake users can use pkg-config:
Assertions are ordinary functions which throw assertion_error when their condition is not met.
Assertions record their source locations automatically.
An assertion library which only needs to report structured failures can depend on the header target and throw assertion_error:
The corresponding pkg-config package is kaycxx-test-headers and provides compiler flags without linker flags.
kaycxx::test-headers provides headers and compile requirements without linking libkaycxx-test.a. An assertion library using the built-in assertion functions also uses compiled formatting helpers and must link to kaycxx::test instead.
Running the test executable produces a hierarchical report. The test framework adds colors automatically when the output is connected to a supported terminal.
When both tests pass:
If addition incorrectly returns 5 instead of -5 for the negative numbers:
suite, describe, it, registration order, dynamic test generation, and callback lifetimes.test target, and per-test CTest discovery.kaycxx-test is always built as a static library because it supplies the test executable's main() function.
If no prefix is specified, CMake installs to /usr/local by default on Unix systems.
Run all tests:
Generate API documentation with Doxygen:
The generated HTML documentation is written to build/debug/apidoc/html/index.html.