3 <meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
5 <link rel="stylesheet" href="../../boostbook.css" type="text/css">
6 <meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
7 <link rel="home" href="../../index.html" title="Boost.Test">
8 <link rel="up" href="../practical_usage_recommendations.html" title="Practical usage recommendations">
9 <link rel="prev" href="../practical_usage_recommendations.html" title="Practical usage recommendations">
10 <link rel="next" href="ide_usage_recommendations.html" title="IDE usage recommendations">
12 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
13 <table cellpadding="2" width="100%"><tr>
14 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../boost.png"></td>
15 <td align="center"><a href="../../../../../../index.html">Home</a></td>
16 <td align="center"><a href="../../../../../../libs/libraries.htm">Libraries</a></td>
17 <td align="center"><a href="http://www.boost.org/users/people.html">People</a></td>
18 <td align="center"><a href="http://www.boost.org/users/faq.html">FAQ</a></td>
19 <td align="center"><a href="../../../../../../more/index.htm">More</a></td>
22 <div class="spirit-nav">
23 <a accesskey="p" href="../practical_usage_recommendations.html"><img src="../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../practical_usage_recommendations.html"><img src="../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="ide_usage_recommendations.html"><img src="../../../../../../doc/src/images/next.png" alt="Next"></a>
26 <div class="titlepage"><div><div><h3 class="title">
27 <a name="boost_test.practical_usage_recommendations.general"></a><a class="link" href="general.html" title="General">General</a>
28 </h3></div></div></div>
30 <a name="boost_test.practical_usage_recommendations.general.h0"></a>
31 <span class="phrase"><a name="boost_test.practical_usage_recommendations.general.prefer_offline_compiled_librarie"></a></span><a class="link" href="general.html#boost_test.practical_usage_recommendations.general.prefer_offline_compiled_librarie">Prefer
32 offline compiled libraries to the inline included components</a>
35 If you are just want to write quick simple test in environment where you
36 never used Boost.Test before - yes, use included components. But if you plan
37 to use Boost.Test on permanent basis, small investment of time needed to
38 build (if not build yet), install and change you makefiles/project settings
39 will soon return to you in a form of shorter compilation time. Why do you
40 need to make your compiler do the same work over and over again?
43 <a name="boost_test.practical_usage_recommendations.general.h1"></a>
44 <span class="phrase"><a name="boost_test.practical_usage_recommendations.general.if_you_use_only_free_function_ba"></a></span><a class="link" href="general.html#boost_test.practical_usage_recommendations.general.if_you_use_only_free_function_ba">If
45 you use only free function based test cases advance to the automatic registration
49 It's really easy to switch to automatic registration. And you don't need
50 to worry about forgotten test cases.
53 <a name="boost_test.practical_usage_recommendations.general.h2"></a>
54 <span class="phrase"><a name="boost_test.practical_usage_recommendations.general.to_find_location_of_first_error_"></a></span><a class="link" href="general.html#boost_test.practical_usage_recommendations.general.to_find_location_of_first_error_">To
55 find location of first error reported by test tool within reused template
56 function, use special hook within framework headers</a>
59 In some cases you are reusing the same template based code from within one
60 test case (actually we recommend better solution in such case - see below).
61 Now if an error gets reported by the test tool within that reused code you
62 may have difficulty locating were exactly error occurred. To address this
63 issue you could either a add <a class="link" href="../utf_reference/testout_reference/test_output_macro_message.html" title="BOOST_TEST_MESSAGE"><code class="computeroutput"><span class="identifier">BOOST_TEST_MESSAGE</span></code></a> statements in
64 templated code that log current type id of template parameters or you can
65 use special hook located in <code class="computeroutput"><span class="identifier">unit_test_result</span><span class="special">.</span><span class="identifier">hpp</span></code> called
66 <code class="computeroutput"><span class="identifier">first_failed_assertion</span><span class="special">()</span></code>.
67 If you set a breakpoint right on the line where this function is defined
68 you will be able to unroll the stack and see where error actually occurred.
71 <a name="boost_test.practical_usage_recommendations.general.h3"></a>
72 <span class="phrase"><a name="boost_test.practical_usage_recommendations.general.to_test_reusable_template_base_c"></a></span><a class="link" href="general.html#boost_test.practical_usage_recommendations.general.to_test_reusable_template_base_c">To
73 test reusable template base component with different template parameter use
74 test case template facility</a>
77 If you writing unit test for generic reusable component you may have a need
78 to test it against set of different template parameter types . Most probably
79 you will end up with a code like this:
81 <pre class="programlisting"><span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> <span class="identifier">TestType</span><span class="special">></span>
82 <span class="keyword">void</span> <span class="identifier">specific_type_test</span><span class="special">(</span> <span class="identifier">TestType</span><span class="special">*</span> <span class="special">=</span> <span class="number">0</span> <span class="special">)</span>
83 <span class="special">{</span>
84 <span class="identifier">MyComponent</span><span class="special"><</span><span class="identifier">TestType</span><span class="special">></span> <span class="identifier">c</span><span class="special">;</span>
85 <span class="comment">// ... here we perform actual testing</span>
86 <span class="special">}</span>
88 <span class="keyword">void</span> <span class="identifier">my_component_test</span><span class="special">()</span>
89 <span class="special">{</span>
90 <span class="identifier">specific_type_test</span><span class="special">(</span> <span class="special">(</span><span class="keyword">int</span><span class="special">*)</span><span class="number">0</span> <span class="special">);</span>
91 <span class="identifier">specific_type_test</span><span class="special">(</span> <span class="special">(</span><span class="keyword">float</span><span class="special">*)</span><span class="number">0</span> <span class="special">);</span>
92 <span class="identifier">specific_type_test</span><span class="special">(</span> <span class="special">(</span><span class="identifier">UDT</span><span class="special">*)</span><span class="number">0</span> <span class="special">);</span>
93 <span class="comment">// ...</span>
94 <span class="special">}</span>
97 This is namely the situation where you would use test case template facility.
98 It not only simplifies this kind of unit testing by automating some of the
99 work, in addition every argument type gets tested separately under unit test
100 monitor. As a result if one of types produce exception or non-fatal error
101 you may still continue and get results from testing with other types.
104 <table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
105 <td align="left"></td>
106 <td align="right"><div class="copyright-footer">Copyright © 2001-2019 Boost.Test
108 Distributed under the Boost Software License, Version 1.0. (See accompanying
109 file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
114 <div class="spirit-nav">
115 <a accesskey="p" href="../practical_usage_recommendations.html"><img src="../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../practical_usage_recommendations.html"><img src="../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="ide_usage_recommendations.html"><img src="../../../../../../doc/src/images/next.png" alt="Next"></a>