Partners: KDAB Whole Tomato Software CppDepend

18 December 2012

Boost Test Library

In this short post I would like to describe some basic things related to Unit testing and the Boost Test library. In ideal world every class/function/module should be covered with some test case, but as we all know we do not live in utopia :) Unit tests are also not so easy to introduce, especially when you have some legacy code.

Header and lib version

Boost UTF (Unit Testing Framework) can be used as a header only or as a compiled library. The whole framework consists of almost hounded source files so for long term usage it is better to compile it and link it with your code. You can create static or dynamic library.
Another interesting option is to have a separate test runner that calls your test cases and outputs the log message. Usually your app will be created as a DLL and then called by the framework.

Basic macros

BOOST_WARN(condition)    - level - warning only
BOOST_CHECK(condition)   - level - error message, continues the test
BOOST_REQUIRE(condition) - level - error message, stops the test execution
Above there are basic tools for unit tests in Boost. Warn, Check and Require.
Displys additional message in case of failure.
BOOST_level_EQUAL(valueA, valueB)
Checks if valueA == valueB, useful for integer values
BOOST_level_EQUAL_COLLECTIONS(startA, endA, startB, endB)
Checks if a whole range of some two collections are equal. Useful for comparing result set with the desired output.
BOOST_level_CLOSE(valueA, valueB, epsilon)
Checks if abs(valueA - valueB) < epsilon, useful for floating point values
Displays error message and continues execution. Useful when a condition is made of several sub-conditions.
Displys error message and stops execution. Useful when a condition is made of several sub-conditions.


Bonus: post published in Vienna :D

Get my free ebook about C++17!

More than 50 pages about the new Language Standard.

C++17 in detail, by Bartlomiej Filipek

© 2017, Bartlomiej Filipek, Blogger platform
Any opinions expressed herein are in no way representative of those of my employers.
This site contains ads or referral links, which provide me with a commission. Thank you for your understanding.