mirror of
https://github.com/boostorg/test.git
synced 2026-01-22 05:42:35 +00:00
350 lines
20 KiB
HTML
350 lines
20 KiB
HTML
<HTML>
|
|
<HEAD>
|
|
<TITLE>Boost Test Library: release rotes</TITLE>
|
|
<LINK rel="stylesheet" type="text/css" href="style/btl.css" media="screen">
|
|
<LINK rel="stylesheet" type="text/css" href="style/btl-print.css" media="print">
|
|
<META http-equiv="Content-Language" content="en-us">
|
|
<META http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
|
|
</HEAD>
|
|
<BODY>
|
|
<DIV class="header"> <A href="index.html">Boost.Test</A> > <SPAN class="current_article">Release
|
|
Notes</SPAN> </DIV>
|
|
<DIV class="body"> <IMG src='btl1.gif' width="252" height="43" alt="Boost Test logo">
|
|
<H1 class="subtitle">Release Notes</H1>
|
|
<P class="page-toc"><A href="#v1_33_0">Boost release 1.33.0</A></P>
|
|
<P class="page-toc"><A href="#v1_32_0">Boost release 1.32.0</A></P>
|
|
<P class="page-toc"><A href="#v1_31_0">Boost release 1.31.0</A> </P>
|
|
<P class="page-toc"><A href="#v1_30_0">Boost release 1.30.0</A><BR>
|
|
<A href="#Migration">Migration guide from Boost Test v1</A> </P>
|
|
<H2><A name="v1_33_0">Boost release 1.33.0</A></H2>
|
|
<p class="first-line-indented"><u>In this release Most of Boost.Test
|
|
components undergo a major or significant change in both design and
|
|
implementation</u>.
|
|
I've strived to keep an interface unchanged as much as
|
|
possible. The primary goals for this update were: </p>
|
|
<ul>
|
|
<li>Make a unit test framework better suited for different 'runners'</li>
|
|
<li>Make unit test framework simpler internally by eliminating test cases
|
|
hierarchy</li>
|
|
<li>Make test tools more uniform</li>
|
|
<li>Make auto unit test framework as usable as possible</li>
|
|
</ul>
|
|
<p class="first-line-indented">Following are details of what updated/changed specifically in each area of
|
|
Boost.Test:</p>
|
|
<ol type="I">
|
|
<li>
|
|
<h3> Execution Monitor</h3>
|
|
</li>
|
|
</ol>
|
|
<p class="first-line-indented">The execution monitor design changes from inheritance to delegation. If
|
|
previously one needed to inherit from the boost::execution monitor to do a
|
|
monitored run of a function, now one need to employ an instance of the
|
|
boost::execution_monitor</p>
|
|
|
|
<p class="first-line-indented">In addition following features implemented:</p>
|
|
<ul>
|
|
<li>Debugger presence detected, in which case catching system errors (SEH) is
|
|
disabled unless explicitly enabled. For now only works for msvc family</li>
|
|
<li> Automatic detection of memory leaks introduced. For now only works for
|
|
msvc family.
|
|
Unit test framework turns this feature on by default.</li>
|
|
</ul>
|
|
<ol start="2">
|
|
<li type="I">
|
|
<h3>Unit test framework (UTF)</h3>
|
|
</li>
|
|
</ol>
|
|
<p class="first-line-indented">This component of Boost.Test undergo a most dramatic changes in both
|
|
design and implementation. </p>
|
|
<ul>
|
|
<li> UTF doesn't employ test cases hierarchy anymore. There is single class
|
|
test_case that model one testing unit and class test_suite that model a
|
|
collection of test units. Previously UTF employed compound test cases (for
|
|
example parameterized test case) which went through it's components (simple
|
|
subtests) during testing run time. Now compound test present itself as test
|
|
case generator which produce a collection if test_case instances during test
|
|
tree construction time. One consequence of this is that user doesn't need to
|
|
keep track of compound test case parameters is it used be. test_case now
|
|
employs a polymorphic callback to a actual test function. As a result of
|
|
this one could supply any zero arity function as an argument of
|
|
BOOST_TEST_CASE. So no extra support needed to be able to create
|
|
boost::function or boost::bind based tests cases. </li>
|
|
<li>Introduced generic mechanism to traverse the test tree. Anyone willing
|
|
to do so just need to implement test_tree_visitor interface and employ
|
|
traverse_test_tree. This allows to implement any pre/post processing over
|
|
test tree. </li>
|
|
<li>Introduced a notion of framework. The framework is responsible for:
|
|
<ul>
|
|
<li>initializing and providing access to master test suite</li>
|
|
<li>providing access to current test case</li>
|
|
<li> running testing from given test tree node (simple or compound). By default it runs from
|
|
root - master test suite. Supports both sequential and random order.</li>
|
|
<li>one may register any test observer agent (implements test_observer
|
|
interface) and framework notifies it of all test events</li>
|
|
<li>provides access to any test case based to unique test unit id</li>
|
|
<li>Using the framework one could implement different test runners. UTF library
|
|
supplies one console runner (unit_test_main.cpp). But it's possible to do
|
|
one winmain based or anything else. For example GUI program that build test
|
|
tree and then run tests by request from any point in test tree.</li>
|
|
</ul>
|
|
</li>
|
|
<li>Unit test log interface changed to single line (used to be begin/end
|
|
macros). Unit test log formatter interface changed. How it much simpler and
|
|
straightforward. Two supplied implementation are separated. </li>
|
|
<li> Notion of unit test result that was responsible for result collection
|
|
and reporting eliminated. Instead introduced independent notions:
|
|
results_collector and results_reporter. Results reporting formatter
|
|
interface made public. Also results_reporter now allows to change an output
|
|
stream.</li>
|
|
<li> Progress monitor functionality (which used to be activated in log
|
|
level log_progress) now is an independent test observer and implemented by
|
|
class progress_monitor.</li>
|
|
<li> Test case template interface changed. Now user doesn't need to
|
|
explicitly register meta class.</li>
|
|
<li>In addition couple more features implemented:
|
|
<ul>
|
|
<li>Added support for test case timing</li>
|
|
<li>UTF made __cdecl - safe</li>
|
|
<li> Result report include skipped tests</li>
|
|
<li> io saver facilities employed to guard against undesirable modification
|
|
in output streams formatting</li>
|
|
<li> template test case automatically generate name that includes type name</li>
|
|
<li> --detect_memory_leak and --random command line arguments added</li>
|
|
</ul>
|
|
</li>
|
|
</ul>
|
|
<ol start="3">
|
|
<li type="I">
|
|
<h3> Test Tools</h3>
|
|
</li>
|
|
</ol>
|
|
<ul>
|
|
<li> Test Tools interfaces now provide 3 version for each tool:
|
|
<ul>
|
|
<li>CHECK- reports an error if assertion failed</li>
|
|
<li>WARN - reports a warning if assertion failed</li>
|
|
<li>REQUIRE - reports an error if assertion failed and aborts test case execution</li>
|
|
</ul>
|
|
</li>
|
|
<li>Implementation completely reworked. All tools implemented now through single vararg function</li>
|
|
<li>In addition following modifications made:
|
|
<ul>
|
|
<li>CHECK_COLLECTION interface changed: it now expect 4 arguments</li>
|
|
<li>BITWISE_EQUAL renamed to CHECK_BITWISE_EQUAL; old name still provided,
|
|
but is deprecated</li>
|
|
<li>CHECK_COLLECTION interface changed to use PP_SEQ and as a result
|
|
support arbitrary(actually maximum is fixed but configurable) number of
|
|
predicate arguments</li>
|
|
<li>most of templates eliminated speeding up test modules compilation</li>
|
|
<li> floating-point precision set to include all significant digits
|
|
(actually the formula may require some rework since it obviously doesn't do
|
|
a good job sometimes)</li>
|
|
<li>BOOST_CHECK/WARN/REQUIRE_SMALL test tool added</li>
|
|
<li>deprecated test tools names are removed </li>
|
|
</ul>
|
|
</li>
|
|
</ul>
|
|
<ol start="4" type="I">
|
|
<li type="I">
|
|
<h3>Auto unit test framework</h3>
|
|
</li>
|
|
</ol>
|
|
<ul>
|
|
<li>BOOST_AUTO_UNIT_TEST renamed to BOOST_AUTO_TEST_CASE. Old name still
|
|
provided but deprecated</li>
|
|
<li>BOOST_AUTO_TEST_CASE_TEMPLATE provides an ability to write a
|
|
self-registering test case template</li>
|
|
<li>BOOST_FIXTURE_TEST_CASE provides an ability to write a self-registering
|
|
test case with fixture</li>
|
|
<li>BOOST_AUTO_TEST_CASE_EXPECTED_FAILURES provides an ability to specify a
|
|
number of expected failures in any self-registering test case</li>
|
|
<li>BOOST_AUTO_TEST_SUITE and BOOST_AUTO_TEST_SUITE_END provide an ability
|
|
to structure test cases into self-registering test suites</li>
|
|
</ul>
|
|
<ol start="5" type="I">
|
|
<li>
|
|
<h3> Included components</h3>
|
|
</li>
|
|
</ol>
|
|
<ul>
|
|
<li>Implementation moved from source files (.cpp) under lib/test/src into
|
|
implementation files (.ipp) under boost/test/impl to eliminate dependency of
|
|
included/minimal components on lib/test/src directory. </li>
|
|
</ul>
|
|
<H2><A name="v1_32_0">Boost release 1.32.0</A></H2>
|
|
<UL>
|
|
<LI>Licence updated to use common Boost software licence</LI>
|
|
<LI>basic_cstring introduced and used in most places instead of std::string
|
|
and char const*</LI>
|
|
<LI>namespace names shortened; old one still supported till next release</LI>
|
|
<LI>numerous portability workaround for several new supported configurations</LI>
|
|
<LI>class properties facilities reworked to be more powerful</LI>
|
|
<LI>added proper encoding of XML PCDATA</LI>
|
|
<LI>support for wide string comparison implemented</LI>
|
|
</UL>
|
|
<H2><A name="v1_31_0">Boost release 1.31.0</A></H2>
|
|
<UL>
|
|
<LI><A href="components/utf/components/test_case/tc_template.html">Zero arity function template based test case</A> </LI>
|
|
<LI><A href="components/execution_monitor/execution_monitor.html#register_exception_translator">Custom
|
|
exception translators support </A> in execution monitor and <A href="components/utf/index.html">register_exception_translator</A> added for unit test framework </LI>
|
|
<LI><A href="components/utf/components/test_case/abstract_interface.html">Test
|
|
cases dependency support </A></LI>
|
|
<LI><A href="components/utf/components/test_case/auto_register_facility.html">Added
|
|
support for multi-module unit tests in automatic registration facility </A></LI>
|
|
<LI>Floating point comparison algorithm reworked (Is not backward compatible!!!)
|
|
<UL>
|
|
<LI><u>tolerance now expected in percent units</u></LI>
|
|
<LI>eliminated tolerance definition by number of rounding errors</LI>
|
|
<LI>switch to comparison type enumeration instead of boolean value </LI>
|
|
</UL>
|
|
</LI>
|
|
<LI><A href="usage/generic.html#t1">First failed assertion support</A></LI>
|
|
<LI>Major
|
|
documentation structure rework and update<BR>
|
|
I hope you will find handy new navigation system </LI>
|
|
<LI>Switched to new boost license</LI>
|
|
<LI><A href="components/test_tools/custom_predicate_support.html">Added support
|
|
for custom users predicate returning both boolean result code and possibly
|
|
error message </A></LI>
|
|
<LI><A href="components/test_tools/reference/BOOST_CHECK_EXCEPTION.html">BOOST_CHECK_EXCEPTION</A> test
|
|
tool introduced - to perform complex validation of expected exception </LI>
|
|
<LI>BOOST_IGNORE_CHECK test tool introduced - to be used with BOOST_CHECK_EXCEPTION </LI>
|
|
<LI>Straiten return code logic for Program Execution Monitor and in case
|
|
of failed initialization in Unit Test Framework </LI>
|
|
<LI>Added position in the collection comparison results error message </LI>
|
|
<LI>Disable SEH if BOOST_DISABLE_WIN32 in effect</LI>
|
|
<LI>Como can't do structured exceptions</LI>
|
|
<LI>Added support for catch_system_error in Test Execution Monitor</LI>
|
|
<LI><A href="components/utf/components/test_log/custom_log_formatter.html">Move
|
|
log formatter in public interface</A></LI>
|
|
<LI>Custom char value log print procedures</LI>
|
|
<LI>Support for logging variable values of types that does not support operator<< </LI>
|
|
<LI>match_pattern updated to show an error mismatch snippet</LI>
|
|
<LI>force UNIX slash for file name </LI>
|
|
<LI>Some annoying MSVC warnings suppressed </LI>
|
|
<LI>test_case_scope_tracker introduced for correct exception unwinding handling </LI>
|
|
<LI>unit_test_result_tracker introduced for correct exception handling </LI>
|
|
<LI>several minor bug and warnings fixes </LI>
|
|
</UL>
|
|
<H2><A name="v1_30_0">Boost release 1.30.0</A></H2>
|
|
<UL>
|
|
<LI>Facility for automatic registration of unit tests is introduced<BR>
|
|
It was requested during original Boost Test review and now it supports
|
|
automatic registration for free function based test cases. Here an example:<BR>
|
|
<PRE class="code">#<SPAN class="reserv-word">include</SPAN> <boost/test/auto_unit_test.hpp>
|
|
|
|
BOOST_AUTO_UNIT_TEST( test1 )
|
|
{
|
|
BOOST_CHECK( true );
|
|
}
|
|
|
|
BOOST_AUTO_UNIT_TEST( test2 )
|
|
{
|
|
BOOST_CHECK( true );
|
|
}</PRE>
|
|
</LI>
|
|
<LI>XML log format is introduced<BR>
|
|
Now user willing to automate errors processing could get a log in XML format.
|
|
Command line switch is introduced that manage log format:<BR>
|
|
--log_format=[XML|HRF] will force XML or human readable format respectively</LI>
|
|
<LI>XML report format is introduced<BR>
|
|
Now user willing to automate results analysis could get a result report
|
|
in XML format. Command line switch is introduced that manage report format:<BR>
|
|
--report_format=[XML|HRF] will force XML or human readable format respectively</LI>
|
|
<LI>BOOST_CHECK_NO_THROW test tool is introduced</LI>
|
|
<LI>BOOST_BITWISE_EQUAL test tool is introduced</LI>
|
|
<LI>libraries file names changed to:<BR>
|
|
boost_prg_exec_monitor<BR>
|
|
boost_test_exec_monitor<BR>
|
|
boost_unit_test_framework</LI>
|
|
<LI>Components examples and test documentation page is introduced<BR>
|
|
Now all test/examples links lead to this page that has summary information
|
|
about all of them, that include expected output, type of test and so
|
|
on</LI>
|
|
<LI>Catch system errors switch introduced<BR>
|
|
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>
|
|
Environment variable name: BOOST_TEST_CATCH_SYSTEM_ERRORS[="no"]<BR>
|
|
Unit test framework command line argument: --catch_system_errors[="no"]</LI>
|
|
<LI>Added building dynamic libraries into Jamfile</LI>
|
|
<LI>MS C runtime debug hooks introduced<BR>
|
|
It allows to catch _ASSERT bases assertion for MSVC</LI>
|
|
<LI>SIGABRT catch added</LI>
|
|
<LI>Eliminated NULLs all over the place<BR>
|
|
I switched to use typedef c_string literal instead of char const* and to
|
|
c_string literal() instead of NULL. Different definition of NULL symbol
|
|
causing small problems for some compilers</LI>
|
|
<LI>class wrapstrstream separated in standalone file and renamed to wrap_stringstream<BR>
|
|
For now it will be located in test/detail. Once I prepare doc page for
|
|
it I will present it for adding into utility</LI>
|
|
<LI>unit_test_result_saver introduced to properly managed reset_current_test_set
|
|
calls in case of exceptions</LI>
|
|
<LI>switch back to use scoped_ptr instead of raw test_suite pointer in unit_test_main.cpp</LI>
|
|
<LI>BOOST_CPP_MAIN_CONFIRMATION renamed to BOOST_PRG_MON_CONFIRM and changed
|
|
it's logic a bit<BR>
|
|
It now should have value "no" to turn off pass confirmation</LI>
|
|
<LI>added tests for auto unit test facility and catching assert statements</LI>
|
|
<LI>Jamfile added info examples directory</LI>
|
|
<LI>Added example input for the unit_test_example5</LI>
|
|
<LI>Command line option --output_format is introduced that both log/report
|
|
format simultaneously</LI>
|
|
<LI>Allows to perform bitwise comparisons of the two arguments provided.
|
|
Will report as many errors as many bits mismatch. Mismatch position is
|
|
reported.</LI>
|
|
<LI>Documentation default palette changed to white</LI>
|
|
<LI>Signal handling selection algorithm fixed<BR>
|
|
BOOST_HAS_SIGACTION is used to select sigaction based signal handling alternative.
|
|
It allowed use of signal handling with gcc on win32 platform.</LI>
|
|
<LI>C strings usage in minimized as much as possible</LI>
|
|
<LI>class_properties header modified to use Boost.Preprocessor for friends
|
|
declaration</LI>
|
|
<LI>other minor code/doc changes and bug fixes</LI>
|
|
</UL>
|
|
<H2><A name="Migration">Boost Test migration guide</A></H2>
|
|
<P class="first-line-indented">This version of Boost.Test library substitute
|
|
the original testing library used in a Boost. These are several simple steps
|
|
you need to follow to smoothly migrate to the latest software.</P>
|
|
<P class="first-line-indented">If your code were using the original version
|
|
of cpp_main facility, to migrate you will need to delete the inclusion of
|
|
the <boost/test/cpp_main.cpp>, since this file is not present any more.
|
|
After that you have following choices:</P>
|
|
<UL>
|
|
<LI>Link with Program Execution Monitor (exact library name depends on compiler
|
|
you are using, but most probably it will be libboost_prg_exec_monitor.lib). </LI>
|
|
<LI>Include <boost/test/included/prg_exec_monitor.hpp>, in which case
|
|
you need not link with precompiled component but it may incur probably
|
|
some compile time overhead.</LI>
|
|
</UL>
|
|
<P class="first-line-indented">If your code were using the original version
|
|
of test_main and test tools facilitates of Boost.Test library, to migrate
|
|
to use of latest one you have following choices:</P>
|
|
<UL>
|
|
<LI>Without changing of the code that were using Boost.Test facilities link
|
|
with Test Execution Monitor (exact library name depends on compiler you
|
|
are using, but most probably it will be libtest_exec_monitor.lib).</LI>
|
|
<LI>Include <boost/test/included/test_exec_monitor.hpp>, in which case
|
|
you need not link with precompiled component but it may incur probably
|
|
some compile time overhead. Definition of BOOST_INCLUDE_MAIN could be deleted
|
|
either.</LI>
|
|
<LI>Include <boost/test/minimal.hpp>, in which case you need not link
|
|
with precompiled component and it most probably does not incur a compile
|
|
time overhead, but you will be limited to the set of features defined in
|
|
the original test library. Definition of BOOST_INCLUDE_MAIN could be deleted
|
|
either. Would you decide in a future to use any of newer Boost Test features
|
|
you will be enforced to snitch to one the two chaises above. </LI>
|
|
</UL>
|
|
</DIV>
|
|
<DIV class="footer">
|
|
<DIV class="footer-body">
|
|
<P> © <A name="Copyright">Copyright</A> <A href="mailto:boost-test%20at%20emailaccount%20dot%20com%20%28please%20unobscure%29">Gennadiy
|
|
Rozental</A> 2001-2006. <BR>
|
|
Distributed under the Boost Software License, Version 1.0.
|
|
(See accompanying file <A href="../../../LICENSE_1_0.txt">LICENSE_1_0.txt</A> or
|
|
copy at <A href="http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</A>)</P>
|
|
<P>Revised:
|
|
<!-- #BeginDate format:Sw1 -->31 May, 2005<!-- #EndDate -->
|
|
</P>
|
|
</DIV>
|
|
</DIV>
|
|
</BODY>
|
|
</HTML>
|