suite_level_decorators.html 15 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201
  1. <html>
  2. <head>
  3. <meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
  4. <title>Suite-level decorators</title>
  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="../decorators.html" title="Decorators">
  9. <link rel="prev" href="../decorators.html" title="Decorators">
  10. <link rel="next" href="explicit_decorator_declaration.html" title="Explicit decorator declaration">
  11. </head>
  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>
  20. </tr></table>
  21. <hr>
  22. <div class="spirit-nav">
  23. <a accesskey="p" href="../decorators.html"><img src="../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../decorators.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="explicit_decorator_declaration.html"><img src="../../../../../../../doc/src/images/next.png" alt="Next"></a>
  24. </div>
  25. <div class="section">
  26. <div class="titlepage"><div><div><h4 class="title">
  27. <a name="boost_test.tests_organization.decorators.suite_level_decorators"></a><a class="link" href="suite_level_decorators.html" title="Suite-level decorators">Suite-level
  28. decorators</a>
  29. </h4></div></div></div>
  30. <p>
  31. Similarly to test case it is possible to apply list of decorators to test
  32. suite. It is done by specifying a list of decorators as the second argument
  33. to the macro <a class="link" href="../../utf_reference/test_org_reference/test_org_boost_auto_test_suite.html" title="BOOST_AUTO_TEST_SUITE"><code class="computeroutput"><span class="identifier">BOOST_AUTO_TEST_SUITE</span></code></a> or the third
  34. argument to the macro <a class="link" href="../../utf_reference/test_org_reference/test_org_boost_test_suite_fixture.html" title="BOOST_FIXTURE_TEST_SUITE"><code class="computeroutput"><span class="identifier">BOOST_FIXTURE_TEST_SUITE</span></code></a>.
  35. </p>
  36. <h6>
  37. <a name="boost_test.tests_organization.decorators.suite_level_decorators.h0"></a>
  38. <span class="phrase"><a name="boost_test.tests_organization.decorators.suite_level_decorators.example_descr"></a></span><a class="link" href="suite_level_decorators.html#boost_test.tests_organization.decorators.suite_level_decorators.example_descr">Example:
  39. Test suite decorators</a>
  40. </h6>
  41. <div class="informaltable"><table class="table">
  42. <colgroup><col></colgroup>
  43. <thead><tr><th>
  44. <p>
  45. Code
  46. </p>
  47. </th></tr></thead>
  48. <tbody><tr><td>
  49. <pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="preprocessor">#define</span> <span class="identifier">BOOST_TEST_MODULE</span> <span class="identifier">decorator_02</span>
  50. <span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">test</span><span class="special">/</span><span class="identifier">included</span><span class="special">/</span><span class="identifier">unit_test</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
  51. <span class="keyword">namespace</span> <span class="identifier">utf</span> <span class="special">=</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">unit_test</span><span class="special">;</span>
  52. <span class="identifier">BOOST_AUTO_TEST_SUITE</span><span class="special">(</span><span class="identifier">suite1</span><span class="special">,</span> <span class="special">*</span> <span class="identifier">utf</span><span class="special">::</span><span class="identifier">label</span><span class="special">(</span><span class="string">"trivial"</span><span class="special">))</span>
  53. <span class="identifier">BOOST_AUTO_TEST_CASE</span><span class="special">(</span><span class="identifier">test_case1</span><span class="special">)</span>
  54. <span class="special">{</span>
  55. <span class="identifier">BOOST_TEST</span><span class="special">(</span><span class="keyword">true</span><span class="special">);</span>
  56. <span class="special">}</span>
  57. <span class="identifier">BOOST_AUTO_TEST_CASE</span><span class="special">(</span><span class="identifier">test_case2</span><span class="special">)</span>
  58. <span class="special">{</span>
  59. <span class="identifier">BOOST_TEST</span><span class="special">(</span><span class="number">1</span> <span class="special">==</span> <span class="number">1</span><span class="special">);</span>
  60. <span class="special">}</span>
  61. <span class="identifier">BOOST_AUTO_TEST_SUITE_END</span><span class="special">()</span>
  62. </pre>
  63. </td></tr></tbody>
  64. </table></div>
  65. <div class="informaltable"><table class="table">
  66. <colgroup><col></colgroup>
  67. <thead><tr><th>
  68. <p>
  69. Output
  70. </p>
  71. </th></tr></thead>
  72. <tbody><tr><td>
  73. <pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="special">&gt;</span> <span class="identifier">decorator_02</span> <span class="special">--</span><span class="identifier">run_test</span><span class="special">=</span><span class="error">@</span><span class="identifier">trivial</span>
  74. <span class="identifier">Running</span> <span class="number">2</span> <span class="identifier">test</span> <span class="identifier">cases</span><span class="special">...</span>
  75. <span class="special">***</span> <span class="identifier">No</span> <span class="identifier">errors</span> <span class="identifier">detected</span>
  76. </pre>
  77. </td></tr></tbody>
  78. </table></div>
  79. <p>
  80. How a test suite decorator affects the processing of the test units inside
  81. of it varies with the decorator and is described for each decorator in
  82. subsequent sections. For instance, the function of the decorator in the
  83. above example is that when tests are filtered by label <code class="computeroutput"><span class="string">"trivial"</span></code>,
  84. every test unit in suite <code class="computeroutput"><span class="identifier">suite1</span></code>
  85. will be run.
  86. </p>
  87. <p>
  88. Similar to C++ namespace test suite can be closed and reopened within the
  89. same test file or span more than one file and you are allowed to apply
  90. different decorators in each point, where test suite is opened. If this
  91. is the case, the list of decorators applied to the test suite is the union
  92. of decorators specified in each place. Here an example.
  93. </p>
  94. <h6>
  95. <a name="boost_test.tests_organization.decorators.suite_level_decorators.h1"></a>
  96. <span class="phrase"><a name="boost_test.tests_organization.decorators.suite_level_decorators.example_descr0"></a></span><a class="link" href="suite_level_decorators.html#boost_test.tests_organization.decorators.suite_level_decorators.example_descr0">Example:
  97. Decorators on multiple suite openings</a>
  98. </h6>
  99. <div class="informaltable"><table class="table">
  100. <colgroup><col></colgroup>
  101. <thead><tr><th>
  102. <p>
  103. Code
  104. </p>
  105. </th></tr></thead>
  106. <tbody><tr><td>
  107. <pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="preprocessor">#define</span> <span class="identifier">BOOST_TEST_MODULE</span> <span class="identifier">decorator_03</span>
  108. <span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">test</span><span class="special">/</span><span class="identifier">included</span><span class="special">/</span><span class="identifier">unit_test</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
  109. <span class="keyword">namespace</span> <span class="identifier">utf</span> <span class="special">=</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">unit_test</span><span class="special">;</span>
  110. <span class="identifier">BOOST_AUTO_TEST_SUITE</span><span class="special">(</span><span class="identifier">suite1</span><span class="special">,</span> <span class="special">*</span> <span class="identifier">utf</span><span class="special">::</span><span class="identifier">label</span><span class="special">(</span><span class="string">"trivial"</span><span class="special">))</span>
  111. <span class="identifier">BOOST_AUTO_TEST_CASE</span><span class="special">(</span><span class="identifier">test_case1</span><span class="special">)</span>
  112. <span class="special">{</span>
  113. <span class="identifier">BOOST_TEST</span><span class="special">(</span><span class="keyword">true</span><span class="special">);</span>
  114. <span class="special">}</span>
  115. <span class="identifier">BOOST_AUTO_TEST_SUITE_END</span><span class="special">()</span>
  116. <span class="identifier">BOOST_AUTO_TEST_SUITE</span><span class="special">(</span><span class="identifier">suite1</span><span class="special">,</span> <span class="special">*</span> <span class="identifier">utf</span><span class="special">::</span><span class="identifier">label</span><span class="special">(</span><span class="string">"simple"</span><span class="special">))</span>
  117. <span class="identifier">BOOST_AUTO_TEST_CASE</span><span class="special">(</span><span class="identifier">test_case2</span><span class="special">)</span>
  118. <span class="special">{</span>
  119. <span class="identifier">BOOST_TEST</span><span class="special">(</span><span class="keyword">true</span><span class="special">);</span>
  120. <span class="special">}</span>
  121. <span class="identifier">BOOST_AUTO_TEST_SUITE_END</span><span class="special">()</span>
  122. <span class="identifier">BOOST_AUTO_TEST_SUITE</span><span class="special">(</span><span class="identifier">suite1</span><span class="special">)</span>
  123. <span class="identifier">BOOST_AUTO_TEST_CASE</span><span class="special">(</span><span class="identifier">test_case3</span><span class="special">)</span>
  124. <span class="special">{</span>
  125. <span class="identifier">BOOST_TEST</span><span class="special">(</span><span class="keyword">true</span><span class="special">);</span>
  126. <span class="special">}</span>
  127. <span class="identifier">BOOST_AUTO_TEST_SUITE_END</span><span class="special">()</span>
  128. </pre>
  129. </td></tr></tbody>
  130. </table></div>
  131. <div class="informaltable"><table class="table">
  132. <colgroup><col></colgroup>
  133. <thead><tr><th>
  134. <p>
  135. Output
  136. </p>
  137. </th></tr></thead>
  138. <tbody><tr><td>
  139. <pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="special">&gt;</span> <span class="identifier">decorator_03</span> <span class="special">--</span><span class="identifier">run_test</span><span class="special">=</span><span class="error">@</span><span class="identifier">trivial</span>
  140. <span class="identifier">Running</span> <span class="number">3</span> <span class="identifier">test</span> <span class="identifier">cases</span><span class="special">...</span>
  141. <span class="special">***</span> <span class="identifier">No</span> <span class="identifier">errors</span> <span class="identifier">detected</span>
  142. <span class="special">&gt;</span> <span class="identifier">decorator_03</span> <span class="special">--</span><span class="identifier">run_test</span><span class="special">=</span><span class="error">@</span><span class="identifier">simple</span>
  143. <span class="identifier">Running</span> <span class="number">3</span> <span class="identifier">test</span> <span class="identifier">cases</span><span class="special">...</span>
  144. <span class="special">***</span> <span class="identifier">No</span> <span class="identifier">errors</span> <span class="identifier">detected</span>
  145. </pre>
  146. </td></tr></tbody>
  147. </table></div>
  148. <p>
  149. In the above example, the scope of test suite <code class="computeroutput"><span class="identifier">suite1</span></code>
  150. is opened three times. This results in a test suite containing three test
  151. cases and associated with two <a class="link" href="../../utf_reference/test_org_reference/decorator_label.html" title="label (decorator)"><code class="computeroutput"><span class="identifier">label</span></code></a> decorators. Therefore running
  152. tests by label <code class="computeroutput"><span class="string">"trivial"</span></code>
  153. as well as by label <code class="computeroutput"><span class="string">"simple"</span></code>
  154. both result in executing all three test cases from the suite.
  155. </p>
  156. <div class="caution"><table border="0" summary="Caution">
  157. <tr>
  158. <td rowspan="2" align="center" valign="top" width="25"><img alt="[Caution]" src="../../../../../../../doc/src/images/caution.png"></td>
  159. <th align="left">Caution</th>
  160. </tr>
  161. <tr><td align="left" valign="top"><p>
  162. The above syntax for decorators requires that the compiler supports variadic
  163. macros (added in C++11). If you intend for your test program to also
  164. work for compilers without variadic macros, use explicit decorator syntax,
  165. described below.
  166. </p></td></tr>
  167. </table></div>
  168. </div>
  169. <table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
  170. <td align="left"></td>
  171. <td align="right"><div class="copyright-footer">Copyright &#169; 2001-2019 Boost.Test
  172. contributors<p>
  173. Distributed under the Boost Software License, Version 1.0. (See accompanying
  174. 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>)
  175. </p>
  176. </div></td>
  177. </tr></table>
  178. <hr>
  179. <div class="spirit-nav">
  180. <a accesskey="p" href="../decorators.html"><img src="../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../decorators.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="explicit_decorator_declaration.html"><img src="../../../../../../../doc/src/images/next.png" alt="Next"></a>
  181. </div>
  182. </body>
  183. </html>