Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

source: downloads/boost_1_34_1/libs/test/doc/release_notes.html @ 33

Last change on this file since 33 was 29, checked in by landauf, 17 years ago

updated boost from 1_33_1 to 1_34_1

File size: 19.6 KB
Line 
1<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
2<HTML>
3<HEAD>
4<TITLE>Boost Test Library: release rotes</TITLE>
5<LINK rel="stylesheet" type="text/css" href="style/btl.css" media="screen">
6<LINK rel="stylesheet" type="text/css" href="style/btl-print.css" media="print">
7<META http-equiv="Content-Language" content="en-us">
8<META http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
9</HEAD>
10<BODY> 
11<DIV class="header"> <A href="index.html">Boost.Test</A> &gt; <SPAN class="current_article">Release
12    Notes</SPAN> </DIV> 
13<DIV class="body"> <IMG src='btl1.gif' width="252" height="43" alt="Boost Test logo"> 
14  <H1 class="subtitle">Release Notes</H1> 
15  <P class="page-toc"><A href="#v1_33_0">Boost release 1.33.0</A></P>
16  <P class="page-toc"><A href="#v1_32_0">Boost release 1.32.0</A></P>
17  <P class="page-toc"><A href="#v1_31_0">Boost release 1.31.0</A> </P>
18  <P class="page-toc"><A href="#v1_30_0">Boost release 1.30.0</A><BR> 
19    <A href="#Migration">Migration guide from Boost Test v1</A> </P>
20    <H2><A name="v1_33_0">Boost release 1.33.0</A></H2>
21    <P class="first-line-indented"><EM>In this release Most
22        of Boost.Test components undergo a major or significant change in both
23        design and implementation</EM>.
24  I've strived to keep an interface unchanged as much as
25  possible. The primary goals for this update were:  </P>
26    <UL>
27      <LI>Make a Unit Test Framework better suited for different 'runners'</LI>
28      <LI>Make Unit Test Framework simpler internally by eliminating test cases
29        hierarchy</LI>
30      <LI>Make test tools more uniform</LI>
31      <LI>Make auto Unit Test Framework as usable as possible</LI>
32    </UL>
33    <P class="first-line-indented">Following are details of what updated/changed specifically in each area of
34    Boost.Test:</P>
35    <OL type="I">
36      <LI>
37        <H3> Execution Monitor</H3>
38      </LI>
39    </OL>
40    <P class="first-line-indented">The execution monitor design changes from inheritance to delegation. If
41        previously one needed to inherit from the boost::execution monitor to do a
42        monitored run of a function, now one need to employ an instance of the
43        boost::execution_monitor</P>
44
45  <P class="first-line-indented">In addition following features implemented:</P>
46    <UL>
47      <LI>Debugger presence detected, in which case catching system errors (SEH) is
48      disabled unless explicitly enabled. For now only works for msvc family</LI>
49      <LI> Automatic detection of memory leaks introduced. For now only works for
50        msvc family.
51      Unit Test Framework turns this feature on by default.</LI>
52    </UL>
53      <OL start="2">
54        <LI type="I">
55          <H3>Unit Test Framework (UTF)</H3>
56        </LI>
57      </OL>
58      <P class="first-line-indented">This component of Boost.Test undergo a most dramatic changes in both
59      design and implementation. </P>
60      <UL>
61        <LI> UTF doesn't employ test cases hierarchy anymore. There is single class
62          test_case that model one testing unit and class test_suite that model a
63          collection of test units. Previously UTF employed compound test cases (for
64          example parameterized test case) which went through it's components (simple
65          subtests) during testing run time. Now compound test present itself as test
66          case generator which produce a collection if test_case instances during test
67          tree construction time. One consequence of this is that user doesn't need to
68          keep track of compound test case parameters is it used be. test_case now
69          employs a polymorphic callback to a actual test function. As a result of
70          this one could supply any zero arity function as an argument of
71          BOOST_TEST_CASE. So no extra support needed to be able to create
72          boost::function or boost::bind based tests cases.   </LI>
73        <LI>Introduced generic mechanism to traverse the test tree. Anyone willing
74            to do so just need to implement test_tree_visitor interface and employ
75            traverse_test_tree. This allows to implement any pre/post processing over
76            test tree.   </LI>
77        <LI>Introduced a notion of framework. The framework is responsible for:
78          <UL>
79            <LI>initializing and providing access to master test suite</LI>
80            <LI>providing access to current test case</LI>
81            <LI> running testing from given test tree node (simple or compound). By default it runs from
82                 root - master test suite. Supports both sequential and random order.</LI>
83            <LI>one may register any test observer agent (implements test_observer
84                 interface) and framework notifies it of all test events</LI>
85            <LI>provides access to any test case based to unique test unit id</LI>
86            <LI>Using the framework one could implement different test runners. UTF library
87                supplies one console runner (unit_test_main.cpp). But it's possible to do
88                one winmain based or anything else. For example GUI program that build test
89                tree and then run tests by request from any point in test tree.</LI>
90          </UL>
91        </LI>
92        <LI>Unit test log interface changed to single line (used to be begin/end
93            macros). Unit test log formatter interface changed. How it much simpler and
94            straightforward. Two supplied implementation are separated.   </LI>
95        <LI> Notion of unit test result that was responsible for result collection
96             and reporting eliminated. Instead introduced independent notions:
97             results_collector and results_reporter. Results reporting formatter
98             interface made public. Also results_reporter now allows to change an output
99             stream.</LI>
100        <LI> Progress monitor functionality (which used to be activated in log
101             level log_progress) now is an independent test observer and implemented by
102             class progress_monitor.</LI>
103        <LI> Test case template interface changed. Now user doesn't need to
104             explicitly register meta class.</LI>
105        <LI>In addition couple more features implemented:
106          <UL>
107            <LI>Added support for test case timing</LI>
108            <LI>UTF made __cdecl - safe</LI>
109            <LI> Result report include skipped tests</LI>
110            <LI> io saver facilities employed to guard against undesirable modification
111                 in output streams formatting</LI>
112            <LI> template test case automatically generate name that includes type name</LI>
113            <LI> --detect_memory_leak and --random command line arguments added</LI>
114          </UL>
115        </LI>
116      </UL>
117      <OL start="3">
118        <LI type="I">
119          <H3> Test Tools</H3>
120        </LI>
121      </OL>
122      <UL>
123        <LI> Test Tools interfaces now provide 3 version for each tool:
124          <UL>
125            <LI>CHECK- reports an error if assertion failed</LI>
126            <LI>WARN - reports a warning if assertion failed</LI>
127            <LI>REQUIRE - reports an error if assertion failed and aborts test case execution</LI>
128          </UL>
129        </LI>
130        <LI>Implementation completely reworked. All tools implemented now through single vararg function</LI>
131        <LI>In addition following modifications made:
132          <UL>
133            <LI>CHECK_COLLECTION interface changed: it now expect 4 arguments</LI>
134            <LI>BITWISE_EQUAL renamed to CHECK_BITWISE_EQUAL; old name still provided,
135                but is deprecated</LI>
136            <LI>CHECK_COLLECTION interface changed to use PP_SEQ and as a result
137                support arbitrary(actually maximum is fixed but configurable) number of
138                predicate arguments</LI>
139            <LI>most of templates eliminated speeding up test modules compilation</LI>
140            <LI> floating-point precision set to include all significant digits
141                 (actually the formula may require some rework since it obviously doesn't do
142                 a good job sometimes)</LI>
143            <LI>BOOST_CHECK/WARN/REQUIRE_SMALL test tool added</LI>
144            <LI>deprecated test tools names are removed </LI>
145          </UL>
146        </LI>
147      </UL>
148      <OL start="4" type="I">
149        <LI type="I">
150          <H3>Auto Unit Test Framework</H3>
151        </LI>
152      </OL>
153      <UL>
154        <LI>BOOST_AUTO_UNIT_TEST renamed to BOOST_AUTO_TEST_CASE. Old name still
155              provided but deprecated</LI>
156        <LI>BOOST_AUTO_TEST_CASE_TEMPLATE provides an ability to write a
157              self-registering test case template</LI>
158        <LI>BOOST_FIXTURE_TEST_CASE provides an ability to write a self-registering
159              test case with fixture</LI>
160        <LI>BOOST_AUTO_TEST_CASE_EXPECTED_FAILURES provides an ability to specify a
161              number of expected failures in any self-registering test case</LI>
162        <LI>BOOST_AUTO_TEST_SUITE and BOOST_AUTO_TEST_SUITE_END provide an ability
163              to structure test cases into self-registering test suites</LI>
164      </UL>
165      <OL start="5" type="I">
166        <LI>
167          <H3> Included components</H3>
168        </LI>
169      </OL>
170      <UL>
171        <LI>Implementation moved from source files (.cpp) under lib/test/src into
172            implementation files (.ipp) under boost/test/impl to eliminate dependency of
173            included/minimal components on lib/test/src directory. </LI>
174      </UL>
175      <H2><A name="v1_32_0">Boost release 1.32.0</A></H2>
176    <UL>
177    <LI>Licence updated to use common Boost software licence</LI>
178    <LI>basic_cstring introduced and used in most places instead of std::string
179      and char const*</LI>
180    <LI>namespace names shortened; old one still supported till next release</LI>
181    <LI>numerous portability workaround for several new supported configurations</LI>
182    <LI>class properties facilities reworked to be more powerful</LI>
183    <LI>added proper encoding of XML PCDATA</LI>
184    <LI>support for wide string comparison implemented</LI>
185    </UL>
186    <H2><A name="v1_31_0">Boost release 1.31.0</A></H2>
187    <UL>
188    <LI><A href="components/utf/components/test_case/tc_template.html">Zero arity function template based test case</A> </LI>
189    <LI><A href="components/execution_monitor/execution_monitor.html#register_exception_translator">Custom
190        exception translators support </A> in execution monitor and <A href="components/utf/index.html">register_exception_translator</A>      added for Unit Test Framework </LI>
191    <LI><A href="components/utf/components/test_case/abstract_interface.html">Test
192    cases dependency support </A></LI>
193    <LI><A href="components/utf/components/test_case/auto_register_facility.html">Added
194        support for multi-module unit tests in automatic registration facility </A></LI>
195    <LI>Floating point comparison algorithm reworked (Is not backward compatible!!!)
196      <UL>
197        <LI><STRONG>tolerance now expected in percent units</STRONG></LI>
198          <LI>eliminated tolerance definition by number of rounding errors</LI>
199          <LI>switch to comparison type enumeration instead of boolean value </LI>
200      </UL>
201    </LI>
202    <LI><A href="usage/generic.html#t1">First failed assertion support</A></LI>
203    <LI>Major
204      documentation structure rework and update<BR>
205      I hope you will find handy new navigation system </LI>
206    <LI>Switched to new boost license</LI>
207    <LI><A href="components/test_tools/custom_predicate_support.html">Added support
208        for custom users predicate returning both boolean result code and possibly
209    error message </A></LI>
210    <LI><A href="components/test_tools/reference/BOOST_CHECK_EXCEPTION.html">BOOST_CHECK_EXCEPTION</A> test
211      tool introduced - to perform complex validation of expected exception </LI>
212    <LI>BOOST_IGNORE_CHECK test tool introduced - to be used with BOOST_CHECK_EXCEPTION </LI>
213    <LI>Straiten return code logic for Unit Test Framework and in case
214    of failed initialization in Unit Test Framework </LI>
215    <LI>Added position in the collection comparison results error message </LI>
216    <LI>Disable SEH if BOOST_DISABLE_WIN32 in effect</LI>
217    <LI>Como can't do structured exceptions</LI>
218    <LI>Added support for catch_system_error in Test Execution Monitor</LI>
219    <LI><A href="components/utf/components/test_log/custom_log_formatter.html">Move
220    log formatter in public interface</A></LI>
221    <LI>Custom char value log print procedures</LI>
222    <LI>Support for logging variable values of types that does not support operator&lt;&lt; </LI>
223    <LI>match_pattern updated to show an error mismatch snippet</LI>
224    <LI>force UNIX slash for file name </LI>
225    <LI>Some annoying MSVC warnings suppressed </LI>
226    <LI>test_case_scope_tracker introduced for correct exception unwinding handling </LI>
227    <LI>unit_test_result_tracker introduced for correct exception handling </LI>
228    <LI>several minor bug and warnings fixes </LI>
229  </UL>
230  <H2><A name="v1_30_0">Boost release 1.30.0</A></H2>
231  <UL> 
232    <LI>Facility for automatic registration of unit tests is introduced<BR> 
233      It was requested during original Boost Test review and now it supports
234        automatic registration for free function based test cases. Here an example:<BR> 
235      <PRE class="code">#<SPAN class="reserv-word">include</SPAN> &lt;boost/test/auto_unit_test.hpp&gt;
236
237BOOST_AUTO_UNIT_TEST( test1 )
238{
239  BOOST_CHECK( true );
240}
241
242BOOST_AUTO_UNIT_TEST( test2 )
243{
244  BOOST_CHECK( true );
245}</PRE> 
246    </LI> 
247    <LI>XML log format is introduced<BR> 
248      Now user willing to automate errors processing could get a log in XML format.
249        Command line switch is introduced that manage log format:<BR> 
250      --log_format=[XML|HRF] will force XML or human readable format respectively</LI> 
251    <LI>XML report format is introduced<BR> 
252      Now user willing to automate results analysis could get a result report
253        in XML format. Command line switch is introduced that manage report format:<BR> 
254      --report_format=[XML|HRF] will force XML or human readable format respectively</LI> 
255    <LI>BOOST_CHECK_NO_THROW test tool is introduced</LI> 
256    <LI>BOOST_BITWISE_EQUAL test tool is introduced</LI> 
257    <LI>libraries file names changed to:<BR> 
258      boost_prg_exec_monitor<BR> 
259      boost_test_exec_monitor<BR> 
260      boost_unit_test_framework</LI> 
261    <LI>Components examples and test documentation page is introduced<BR> 
262      Now all test/examples links lead to this page that has summary information
263        about all of them, that include expected output, type of test and so
264    on</LI> 
265    <LI>Catch system errors switch introduced<BR> 
266      This will work among the lines described in <A href="http://lists.boost.org/MailArchives/boost/msg40028.php"> http://lists.boost.org/MailArchives/boost/msg40028.php</A><BR> 
267      Environment variable name: BOOST_TEST_CATCH_SYSTEM_ERRORS[=&quot;no&quot;]<BR> 
268      Unit Test Framework command line argument: --catch_system_errors[=&quot;no&quot;]</LI> 
269    <LI>Added building dynamic libraries into Jamfile</LI> 
270    <LI>MS C runtime debug hooks introduced<BR> 
271      It allows to catch _ASSERT bases assertion for MSVC</LI> 
272    <LI>SIGABRT catch added</LI> 
273    <LI>Eliminated NULLs all over the place<BR> 
274      I switched to use typedef c_string literal instead of char const* and to
275        c_string literal() instead of NULL. Different definition of NULL symbol
276        causing small problems for some compilers</LI> 
277    <LI>class wrapstrstream separated in standalone file and renamed to wrap_stringstream<BR> 
278      For now it will be located in test/detail. Once I prepare doc page for
279        it I will present it for adding into utility</LI> 
280    <LI>unit_test_result_saver introduced to properly managed reset_current_test_set
281      calls in case of exceptions</LI> 
282    <LI>switch back to use scoped_ptr instead of raw test_suite pointer in unit_test_main.cpp</LI> 
283    <LI>BOOST_CPP_MAIN_CONFIRMATION renamed to BOOST_PRG_MON_CONFIRM and changed
284      it's logic a bit<BR> 
285      It now should have value &quot;no&quot; to turn off pass confirmation</LI> 
286    <LI>added tests for auto unit test facility and catching assert statements</LI> 
287    <LI>Jamfile added info examples directory</LI> 
288    <LI>Added example input for the unit_test_example5</LI> 
289    <LI>Command line option --output_format is introduced that both log/report
290      format simultaneously</LI> 
291    <LI>Allows to perform bitwise comparisons of the two arguments provided.
292      Will report as many errors as many bits mismatch. Mismatch position is
293      reported.</LI> 
294    <LI>Documentation default palette changed to white</LI> 
295    <LI>Signal handling selection algorithm fixed<BR> 
296      BOOST_HAS_SIGACTION is used to select sigaction based signal handling alternative.
297        It allowed use of signal handling with gcc on win32 platform.</LI> 
298    <LI>C strings usage in minimized as much as possible</LI> 
299    <LI>class_properties header modified to use Boost.Preprocessor for friends
300      declaration</LI> 
301    <LI>other minor code/doc changes and bug fixes</LI> 
302  </UL> 
303  <H2><A name="Migration">Boost Test migration guide</A></H2> 
304  <P class="first-line-indented">This version of Boost.Test library substitute
305    the original testing library used in a Boost. These are several simple steps
306    you need to follow to smoothly migrate to the latest software.</P> 
307  <P class="first-line-indented">If your code were using the original version
308    of cpp_main facility, to migrate you will need to delete the inclusion of
309    the &lt;boost/test/cpp_main.cpp&gt;, since this file is not present any more.
310    After that you have following choices:</P> 
311  <UL> 
312    <LI>Link with Unit Test Framework (exact library name depends on compiler
313      you are using, but most probably it will be libboost_prg_exec_monitor.lib). </LI> 
314    <LI>Include &lt;boost/test/included/prg_exec_monitor.hpp&gt;, in which case
315      you need not link with precompiled component but it may incur probably
316      some compile time overhead.</LI> 
317  </UL> 
318  <P class="first-line-indented">If your code were using the original version
319    of test_main and test tools facilitates of Boost.Test library, to migrate
320    to use of latest one you have following choices:</P> 
321  <UL> 
322    <LI>Without changing of the code that were using Boost.Test facilities link
323      with Test Execution Monitor (exact library name depends on compiler you
324      are using, but most probably it will be libtest_exec_monitor.lib).</LI> 
325    <LI>Include &lt;boost/test/included/test_exec_monitor.hpp&gt;, in which case
326      you need not link with precompiled component but it may incur probably
327      some compile time overhead. Definition of BOOST_INCLUDE_MAIN could be deleted
328      either.</LI> 
329    <LI>Include &lt;boost/test/minimal.hpp&gt;, in which case you need not link
330      with precompiled component and it most probably does not incur a compile
331      time overhead, but you will be limited to the set of features defined in
332      the original test library. Definition of BOOST_INCLUDE_MAIN could be deleted
333      either. Would you decide in a future to use any of newer Boost.Test features
334      you will be enforced to snitch to one the two chaises above. </LI> 
335  </UL> 
336</DIV> 
337<DIV class="footer"> 
338  <DIV class="footer-body"> 
339    <P> &copy; <A name="Copyright">Copyright</A> <A href="mailto:boost-test%20at%20emailaccount%20dot%20com%20%28please%20unobscure%29">Gennadiy
340        Rozental</A> 2001-2006. <BR> 
341      Distributed under the Boost Software License, Version 1.0.
342      (See accompanying file <A href="../../../LICENSE_1_0.txt">LICENSE_1_0.txt</A> or
343      copy at <A href="http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</A>)</P> 
344    <P>Revised:
345      <!-- #BeginDate format:Sw1 -->8 March, 2006<!-- #EndDate --> 
346    </P> 
347  </DIV> 
348</DIV> 
349</BODY>
350</HTML>
Note: See TracBrowser for help on using the repository browser.