1[/ 2 / Copyright (c) 2003 Boost.Test contributors 3 / 4 / Distributed under the Boost Software License, Version 1.0. (See accompanying 5 / file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) 6 /] 7 8 9[section:intro Introduction] 10 11[role epigraph Test everything that could possibly break] 12[role epigraph --XP maxim] 13 14[role epigraph 15 The acceptance test makes the customer satisfied 16 that the software provides the business value that 17 makes them willing to pay for it. The unit test makes 18 the programmer satisfied that the software does what 19 the programmer thinks it does 20] 21[role epigraph --XP maxim] 22 23What is the first thing you need to do when you start working on new library/class/program? That's right - 24you need to start with the unit test module (hopefully you all gave this answer!). Occasionally, you may get 25away with simple test implemented using `assert`s, but any professional developer soon finds this approach 26lacking. It becomes clear that it's too time-consuming and tedious for simple, but repetitive unit testing 27tasks and it's too inflexible for most non-trivial ones. 28 29The Boost.Test library provides both an easy to use and flexible set of interfaces for writing test 30programs, organizing tests into simple test cases and test suites, and controlling their runtime execution. 31Some of Boost.Test's interfaces are also useful in production (non-test) environments. 32 33[/ ##################################################################### ] 34 35[h4 Starter example] 36 37This is how a minimal single-file test program looks like: 38 39`` 40#define __BOOST_TEST_MODULE__ My Test /*< Macro __BOOST_TEST_MODULE__ defines the name of our program, which will be used in messages. >*/ 41#include <boost/test/included/unit_test.hpp> /*< This includes all the __UTF__ in a "header-only" mode; it even defines function `main`, which will call the subsequently defined test cases. >*/ 42 43__BOOST_AUTO_TEST_CASE__(first_test) /*< Macro __BOOST_AUTO_TEST_CASE__ declares a ['test case] named `first_test`, which in turn will run the content of `first_test` inside the 44controlled testing environment.>*/ 45{ 46 int i = 1; 47 __BOOST_TEST__(i); /*< This test checks if `i` is non-zero. >*/ 48 __BOOST_TEST__(i == 2); /*< This test checks if `i` has value `2` (something more than just evaluating the equality operator). >*/ 49} 50`` 51 52When run, it produces the following output: 53 54[pre 55Running 1 test case... 56test_file.cpp(8): error: in "first_test": check i == 2 has failed [1 != 2] 57 58*** 1 failure is detected in the test module "My Test" 59] 60 61[/ ##################################################################### ] 62 63[include overview.qbk] 64 65 66[endsect] 67 68[/ EOF] 69