expected_failures.html 31 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335
  1. <html>
  2. <head>
  3. <meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
  4. <title>Expected failures specification</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="../testing_tools.html" title="Writing unit tests">
  9. <link rel="prev" href="timeout.html" title="Time-out for test cases">
  10. <link rel="next" href="custom_predicates.html" title="Custom predicate support">
  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="timeout.html"><img src="../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../testing_tools.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="custom_predicates.html"><img src="../../../../../../doc/src/images/next.png" alt="Next"></a>
  24. </div>
  25. <div class="section">
  26. <div class="titlepage"><div><div><h3 class="title">
  27. <a name="boost_test.testing_tools.expected_failures"></a><a class="link" href="expected_failures.html" title="Expected failures specification">Expected
  28. failures specification</a>
  29. </h3></div></div></div>
  30. <p>
  31. While in a perfect world all test assertions should pass in order for a test
  32. module to pass, in some situations it is desirable to temporarily allow particular
  33. tests to fail. For example, where a particular feature is not implemented
  34. yet and one needs to prepare a library for the release or when particular
  35. test fails on some platforms. To avoid a nagging red box in regression tests
  36. table, you can use the expected failures feature.
  37. </p>
  38. <p>
  39. This feature allows specifying an expected number of failed assertions per
  40. test unit. The value is specified during test tree construction, and can't
  41. be updated during test execution.
  42. </p>
  43. <p>
  44. The feature is not intended to be used to check for expected functionality
  45. failures. To check that a particular input is causing an exception to be
  46. thrown use <a class="link" href="../utf_reference/testing_tool_ref/assertion_boost_level_throw.html" title="BOOST_&lt;level&gt;_THROW"><code class="computeroutput"><span class="identifier">BOOST_</span><span class="special">&lt;</span><span class="identifier">level</span><span class="special">&gt;</span><span class="identifier">_THROW</span></code></a> family of testing tools.
  47. </p>
  48. <p>
  49. The usage of this feature should be limited and employed only after careful
  50. consideration. In general you should only use this feature when it is necessary
  51. to force a test module to pass without actually fixing the problem. Obviously,
  52. an excessive usage of expected failures defeats the purpose of the unit test.
  53. In most cases it only needs be applied temporarily.
  54. </p>
  55. <p>
  56. You also need to remember that the expected failure specification is per
  57. test case. This means that any failed assertion within that test case can
  58. satisfy the expected failures quota. Meaning it is possible for an unexpected
  59. failure to occur to satisfy this quota.
  60. </p>
  61. <div class="note"><table border="0" summary="Note">
  62. <tr>
  63. <td rowspan="2" align="center" valign="top" width="25"><img alt="[Note]" src="../../../../../../doc/src/images/note.png"></td>
  64. <th align="left">Note</th>
  65. </tr>
  66. <tr><td align="left" valign="top"><p>
  67. If an assertion at fault is fixed and passed while an expected failures
  68. specification still present, the number of failures becomes smaller than
  69. expected. The test is going to be reported as passed; instead, a warning
  70. message will be issued.
  71. </p></td></tr>
  72. </table></div>
  73. <a name="l_expected_failure"></a><h4>
  74. <a name="boost_test.testing_tools.expected_failures.h0"></a>
  75. <span class="phrase"><a name="boost_test.testing_tools.expected_failures.expected_failure_specification"></a></span><a class="link" href="expected_failures.html#boost_test.testing_tools.expected_failures.expected_failure_specification">Expected
  76. failure specification</a>
  77. </h4>
  78. <p>
  79. The decorator <a class="link" href="../utf_reference/testing_tool_ref/decorator_expected_failures.html" title="expected_failures (decorator)"><code class="computeroutput"><span class="identifier">expected_failures</span></code></a> defines the number
  80. of assertions that are expected to fail within the corresponding test unit.
  81. It is reported as failure when the number of failed assertions is greater
  82. than the declared expected number of failures. If the number of failed assertions
  83. is less than the number of expected failures a message is reported. The total
  84. number of expected failures for a given test suite <code class="computeroutput"><span class="identifier">S</span></code>
  85. is the sum of the declared expected failures in <code class="computeroutput"><span class="identifier">S</span></code>
  86. and the sum of expected failures in all nested test units:
  87. </p>
  88. <h6>
  89. <a name="boost_test.testing_tools.expected_failures.h1"></a>
  90. <span class="phrase"><a name="boost_test.testing_tools.expected_failures.example_descr"></a></span><a class="link" href="expected_failures.html#boost_test.testing_tools.expected_failures.example_descr">Example:
  91. decorator expected_failures</a>
  92. </h6>
  93. <div class="informaltable"><table class="table">
  94. <colgroup><col></colgroup>
  95. <thead><tr><th>
  96. <p>
  97. Code
  98. </p>
  99. </th></tr></thead>
  100. <tbody><tr><td>
  101. <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_10</span>
  102. <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>
  103. <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>
  104. <span class="identifier">BOOST_AUTO_TEST_SUITE</span><span class="special">(</span><span class="identifier">suite1</span><span class="special">,</span>
  105. <span class="special">*</span> <span class="identifier">utf</span><span class="special">::</span><span class="identifier">expected_failures</span><span class="special">(</span><span class="number">1</span><span class="special">))</span>
  106. <span class="identifier">BOOST_AUTO_TEST_CASE</span><span class="special">(</span><span class="identifier">test1</span><span class="special">,</span>
  107. <span class="special">*</span> <span class="identifier">utf</span><span class="special">::</span><span class="identifier">expected_failures</span><span class="special">(</span><span class="number">2</span><span class="special">))</span>
  108. <span class="special">{</span>
  109. <span class="identifier">BOOST_TEST</span><span class="special">(</span><span class="keyword">false</span><span class="special">);</span>
  110. <span class="identifier">BOOST_TEST</span><span class="special">(</span><span class="keyword">false</span><span class="special">);</span>
  111. <span class="special">}</span>
  112. <span class="identifier">BOOST_AUTO_TEST_CASE</span><span class="special">(</span><span class="identifier">test2</span><span class="special">)</span>
  113. <span class="special">{</span>
  114. <span class="identifier">BOOST_TEST</span><span class="special">(</span><span class="keyword">false</span><span class="special">);</span>
  115. <span class="identifier">BOOST_TEST</span><span class="special">(</span><span class="keyword">false</span><span class="special">);</span>
  116. <span class="special">}</span>
  117. <span class="identifier">BOOST_AUTO_TEST_SUITE_END</span><span class="special">()</span>
  118. </pre>
  119. </td></tr></tbody>
  120. </table></div>
  121. <div class="informaltable"><table class="table">
  122. <colgroup><col></colgroup>
  123. <thead><tr><th>
  124. <p>
  125. Output
  126. </p>
  127. </th></tr></thead>
  128. <tbody><tr><td>
  129. <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_10</span>
  130. <span class="identifier">Running</span> <span class="number">2</span> <span class="identifier">test</span> <span class="identifier">cases</span><span class="special">...</span>
  131. <span class="identifier">test</span><span class="special">.</span><span class="identifier">cpp</span><span class="special">(</span><span class="number">11</span><span class="special">):</span> <span class="identifier">error</span><span class="special">:</span> <span class="identifier">in</span> <span class="string">"suite1/test1"</span><span class="special">:</span> <span class="identifier">check</span> <span class="keyword">false</span> <span class="identifier">has</span> <span class="identifier">failed</span>
  132. <span class="identifier">test</span><span class="special">.</span><span class="identifier">cpp</span><span class="special">(</span><span class="number">12</span><span class="special">):</span> <span class="identifier">error</span><span class="special">:</span> <span class="identifier">in</span> <span class="string">"suite1/test1"</span><span class="special">:</span> <span class="identifier">check</span> <span class="keyword">false</span> <span class="identifier">has</span> <span class="identifier">failed</span>
  133. <span class="identifier">test</span><span class="special">.</span><span class="identifier">cpp</span><span class="special">(</span><span class="number">17</span><span class="special">):</span> <span class="identifier">error</span><span class="special">:</span> <span class="identifier">in</span> <span class="string">"suite1/test2"</span><span class="special">:</span> <span class="identifier">check</span> <span class="keyword">false</span> <span class="identifier">has</span> <span class="identifier">failed</span>
  134. <span class="identifier">test</span><span class="special">.</span><span class="identifier">cpp</span><span class="special">(</span><span class="number">18</span><span class="special">):</span> <span class="identifier">error</span><span class="special">:</span> <span class="identifier">in</span> <span class="string">"suite1/test2"</span><span class="special">:</span> <span class="identifier">check</span> <span class="keyword">false</span> <span class="identifier">has</span> <span class="identifier">failed</span>
  135. <span class="special">***</span> <span class="number">4</span> <span class="identifier">failures</span> <span class="identifier">are</span> <span class="identifier">detected</span> <span class="special">(</span><span class="number">3</span> <span class="identifier">failures</span> <span class="identifier">are</span> <span class="identifier">expected</span><span class="special">)</span> <span class="identifier">in</span> <span class="identifier">the</span> <span class="identifier">test</span> <span class="identifier">module</span> <span class="string">"decorator_10"</span>
  136. <span class="special">&gt;</span> <span class="identifier">decorator_10</span> <span class="special">--</span><span class="identifier">run_test</span><span class="special">=</span><span class="identifier">suite1</span><span class="special">/</span><span class="identifier">test1</span>
  137. <span class="identifier">Running</span> <span class="number">1</span> <span class="identifier">test</span> <span class="keyword">case</span><span class="special">...</span>
  138. <span class="identifier">test</span><span class="special">.</span><span class="identifier">cpp</span><span class="special">(</span><span class="number">11</span><span class="special">):</span> <span class="identifier">error</span><span class="special">:</span> <span class="identifier">in</span> <span class="string">"suite1/test1"</span><span class="special">:</span> <span class="identifier">check</span> <span class="keyword">false</span> <span class="identifier">has</span> <span class="identifier">failed</span>
  139. <span class="identifier">test</span><span class="special">.</span><span class="identifier">cpp</span><span class="special">(</span><span class="number">12</span><span class="special">):</span> <span class="identifier">error</span><span class="special">:</span> <span class="identifier">in</span> <span class="string">"suite1/test1"</span><span class="special">:</span> <span class="identifier">check</span> <span class="keyword">false</span> <span class="identifier">has</span> <span class="identifier">failed</span>
  140. <span class="special">***</span> <span class="identifier">No</span> <span class="identifier">errors</span> <span class="identifier">detected</span>
  141. </pre>
  142. </td></tr></tbody>
  143. </table></div>
  144. <p>
  145. In the above example, we first run all test cases with four failed assertions.
  146. The total number of expected failures is 3: 1 (for test <code class="computeroutput"><span class="identifier">suite1</span></code>)
  147. + 2 (for <code class="computeroutput"><span class="identifier">test1</span></code>). Because
  148. the expected failure count is exceeded, the error is reported. In the second
  149. case, we only run test case <code class="computeroutput"><span class="identifier">suite1</span><span class="special">/</span><span class="identifier">test1</span></code>:
  150. two failures occur, two failures are expected, therefore no error is reported.
  151. </p>
  152. <h4>
  153. <a name="boost_test.testing_tools.expected_failures.h2"></a>
  154. <span class="phrase"><a name="boost_test.testing_tools.expected_failures.usage_with_automatically_registe"></a></span><a class="link" href="expected_failures.html#boost_test.testing_tools.expected_failures.usage_with_automatically_registe">Usage
  155. with automatically registered test cases</a>
  156. </h4>
  157. <div class="caution"><table border="0" summary="Caution">
  158. <tr>
  159. <td rowspan="2" align="center" valign="top" width="25"><img alt="[Caution]" src="../../../../../../doc/src/images/caution.png"></td>
  160. <th align="left">Caution</th>
  161. </tr>
  162. <tr><td align="left" valign="top"><p>
  163. this usage is considered as deprecated. Please consider using the <a class="link" href="expected_failures.html#l_expected_failure"><code class="computeroutput"><span class="identifier">expected_failures</span></code></a>
  164. decorator instead.
  165. </p></td></tr>
  166. </table></div>
  167. <p>
  168. For backwards compatibility, it is possible to indicate the expected failures
  169. with <a class="link" href="../utf_reference/testing_tool_ref/test_org_boost_test_case_expected_failure.html" title="BOOST_AUTO_TEST_CASE_EXPECTED_FAILURES"><code class="computeroutput"><span class="identifier">BOOST_AUTO_TEST_CASE_EXPECTED_FAILURES</span></code></a>
  170. <a href="#ftn.boost_test.testing_tools.expected_failures.f0" class="footnote" name="boost_test.testing_tools.expected_failures.f0"><sup class="footnote">[15]</sup></a> before the test case definition.
  171. </p>
  172. <pre class="programlisting"><span class="identifier">BOOST_AUTO_TEST_CASE_EXPECTED_FAILURES</span><span class="special">(</span><span class="identifier">test_case_name</span><span class="special">,</span> <span class="identifier">number_of_expected_failures</span><span class="special">);</span>
  173. </pre>
  174. <p>
  175. You can use this macro both on a file scope and inside a test suite. Moreover
  176. you can use it even if name of test units coincide in different test suites.
  177. Expected failures specification applies to the test unit belonging to the
  178. same test suite where <a class="link" href="../utf_reference/testing_tool_ref/test_org_boost_test_case_expected_failure.html" title="BOOST_AUTO_TEST_CASE_EXPECTED_FAILURES"><code class="computeroutput"><span class="identifier">BOOST_AUTO_TEST_CASE_EXPECTED_FAILURES</span></code></a>
  179. resides.
  180. </p>
  181. <h6>
  182. <a name="boost_test.testing_tools.expected_failures.h3"></a>
  183. <span class="phrase"><a name="boost_test.testing_tools.expected_failures.example_descr0"></a></span><a class="link" href="expected_failures.html#boost_test.testing_tools.expected_failures.example_descr0">Example:
  184. Expected failures specification for automatically registered test case</a>
  185. </h6>
  186. <div class="informaltable"><table class="table">
  187. <colgroup><col></colgroup>
  188. <thead><tr><th>
  189. <p>
  190. Code
  191. </p>
  192. </th></tr></thead>
  193. <tbody><tr><td>
  194. <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">example</span>
  195. <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>
  196. <span class="identifier">BOOST_AUTO_TEST_CASE_EXPECTED_FAILURES</span><span class="special">(</span> <span class="identifier">my_test1</span><span class="special">,</span> <span class="number">1</span> <span class="special">)</span>
  197. <span class="identifier">BOOST_AUTO_TEST_CASE</span><span class="special">(</span> <span class="identifier">my_test1</span> <span class="special">)</span>
  198. <span class="special">{</span>
  199. <span class="identifier">BOOST_TEST</span><span class="special">(</span> <span class="number">2</span> <span class="special">==</span> <span class="number">1</span> <span class="special">);</span>
  200. <span class="special">}</span>
  201. <span class="identifier">BOOST_AUTO_TEST_SUITE</span><span class="special">(</span> <span class="identifier">internal</span> <span class="special">)</span>
  202. <span class="identifier">BOOST_AUTO_TEST_CASE_EXPECTED_FAILURES</span><span class="special">(</span> <span class="identifier">my_test1</span><span class="special">,</span> <span class="number">2</span> <span class="special">)</span>
  203. <span class="identifier">BOOST_AUTO_TEST_CASE</span><span class="special">(</span> <span class="identifier">my_test1</span> <span class="special">)</span>
  204. <span class="special">{</span>
  205. <span class="identifier">BOOST_CHECK_EQUAL</span><span class="special">(</span> <span class="keyword">sizeof</span><span class="special">(</span><span class="keyword">int</span><span class="special">),</span> <span class="keyword">sizeof</span><span class="special">(</span><span class="keyword">char</span><span class="special">)</span> <span class="special">);</span>
  206. <span class="identifier">BOOST_CHECK_EQUAL</span><span class="special">(</span> <span class="keyword">sizeof</span><span class="special">(</span><span class="keyword">int</span><span class="special">*),</span> <span class="keyword">sizeof</span><span class="special">(</span><span class="keyword">char</span><span class="special">)</span> <span class="special">);</span>
  207. <span class="special">}</span>
  208. <span class="identifier">BOOST_AUTO_TEST_SUITE_END</span><span class="special">()</span>
  209. </pre>
  210. </td></tr></tbody>
  211. </table></div>
  212. <div class="informaltable"><table class="table">
  213. <colgroup><col></colgroup>
  214. <thead><tr><th>
  215. <p>
  216. Output
  217. </p>
  218. </th></tr></thead>
  219. <tbody><tr><td>
  220. <pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="special">&gt;</span> <span class="identifier">example</span> <span class="special">--</span><span class="identifier">report_level</span><span class="special">=</span><span class="keyword">short</span>
  221. <span class="identifier">Running</span> <span class="number">2</span> <span class="identifier">test</span> <span class="identifier">cases</span><span class="special">...</span>
  222. <span class="identifier">test</span><span class="special">.</span><span class="identifier">cpp</span><span class="special">(</span><span class="number">10</span><span class="special">):</span> <span class="identifier">error</span> <span class="identifier">in</span> <span class="string">"my_test1"</span><span class="special">:</span> <span class="identifier">check</span> <span class="number">2</span> <span class="special">==</span> <span class="number">1</span> <span class="identifier">has</span> <span class="identifier">failed</span>
  223. <span class="identifier">test</span><span class="special">.</span><span class="identifier">cpp</span><span class="special">(</span><span class="number">21</span><span class="special">):</span> <span class="identifier">error</span> <span class="identifier">in</span> <span class="string">"my_test1"</span><span class="special">:</span> <span class="identifier">check</span> <span class="keyword">sizeof</span><span class="special">(</span><span class="keyword">int</span><span class="special">)</span> <span class="special">==</span> <span class="keyword">sizeof</span><span class="special">(</span><span class="keyword">char</span><span class="special">)</span> <span class="identifier">has</span> <span class="identifier">failed</span> <span class="special">[</span><span class="number">4</span> <span class="special">!=</span> <span class="number">1</span><span class="special">]</span>
  224. <span class="identifier">test</span><span class="special">.</span><span class="identifier">cpp</span><span class="special">(</span><span class="number">22</span><span class="special">):</span> <span class="identifier">error</span> <span class="identifier">in</span> <span class="string">"my_test1"</span><span class="special">:</span> <span class="identifier">check</span> <span class="keyword">sizeof</span><span class="special">(</span><span class="keyword">int</span><span class="special">*)</span> <span class="special">==</span> <span class="keyword">sizeof</span><span class="special">(</span><span class="keyword">char</span><span class="special">)</span> <span class="identifier">has</span> <span class="identifier">failed</span> <span class="special">[</span><span class="number">4</span> <span class="special">!=</span> <span class="number">1</span><span class="special">]</span>
  225. <span class="identifier">Test</span> <span class="identifier">suite</span> <span class="string">"example"</span> <span class="identifier">passed</span> <span class="identifier">with</span><span class="special">:</span>
  226. <span class="number">3</span> <span class="identifier">assertions</span> <span class="identifier">out</span> <span class="identifier">of</span> <span class="number">3</span> <span class="identifier">failed</span>
  227. <span class="number">3</span> <span class="identifier">failures</span> <span class="identifier">expected</span>
  228. <span class="number">2</span> <span class="identifier">test</span> <span class="identifier">cases</span> <span class="identifier">out</span> <span class="identifier">of</span> <span class="number">2</span> <span class="identifier">passed</span>
  229. </pre>
  230. </td></tr></tbody>
  231. </table></div>
  232. <h4>
  233. <a name="boost_test.testing_tools.expected_failures.h4"></a>
  234. <span class="phrase"><a name="boost_test.testing_tools.expected_failures.usage_with_manually_registered_t"></a></span><a class="link" href="expected_failures.html#boost_test.testing_tools.expected_failures.usage_with_manually_registered_t">Usage
  235. with manually registered test cases</a>
  236. </h4>
  237. <div class="caution"><table border="0" summary="Caution">
  238. <tr>
  239. <td rowspan="2" align="center" valign="top" width="25"><img alt="[Caution]" src="../../../../../../doc/src/images/caution.png"></td>
  240. <th align="left">Caution</th>
  241. </tr>
  242. <tr><td align="left" valign="top"><p>
  243. this usage is considered as deprecated. Please consider using the <a class="link" href="expected_failures.html#l_expected_failure"><code class="computeroutput"><span class="identifier">expected_failures</span></code></a>
  244. decorator instead.
  245. </p></td></tr>
  246. </table></div>
  247. <p>
  248. To set the value of expected failures for the manually registered test unit
  249. pass it as a second argument for the <a class="link" href="../tests_organization/test_tree/test_suite.html#ref_test_case_registration"><code class="computeroutput"><span class="identifier">test_suite</span><span class="special">::</span><span class="identifier">add</span></code></a> call during test unit registration.
  250. </p>
  251. <h6>
  252. <a name="boost_test.testing_tools.expected_failures.h5"></a>
  253. <span class="phrase"><a name="boost_test.testing_tools.expected_failures.example_descr1"></a></span><a class="link" href="expected_failures.html#boost_test.testing_tools.expected_failures.example_descr1">Example:
  254. Expected failures specification for manually registered test case</a>
  255. </h6>
  256. <div class="informaltable"><table class="table">
  257. <colgroup><col></colgroup>
  258. <thead><tr><th>
  259. <p>
  260. Code
  261. </p>
  262. </th></tr></thead>
  263. <tbody><tr><td>
  264. <pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><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>
  265. <span class="keyword">using</span> <span class="keyword">namespace</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">unit_test</span><span class="special">;</span>
  266. <span class="keyword">void</span> <span class="identifier">free_test_function</span><span class="special">()</span>
  267. <span class="special">{</span>
  268. <span class="identifier">BOOST_TEST</span><span class="special">(</span> <span class="number">2</span> <span class="special">==</span> <span class="number">1</span> <span class="special">);</span>
  269. <span class="special">}</span>
  270. <span class="identifier">test_suite</span><span class="special">*</span> <span class="identifier">init_unit_test_suite</span><span class="special">(</span> <span class="keyword">int</span><span class="special">,</span> <span class="keyword">char</span><span class="special">*</span> <span class="special">[]</span> <span class="special">)</span>
  271. <span class="special">{</span>
  272. <span class="identifier">framework</span><span class="special">::</span><span class="identifier">master_test_suite</span><span class="special">().</span>
  273. <span class="identifier">add</span><span class="special">(</span> <span class="identifier">BOOST_TEST_CASE</span><span class="special">(</span> <span class="special">&amp;</span><span class="identifier">free_test_function</span> <span class="special">),</span> <span class="number">2</span> <span class="special">);</span>
  274. <span class="keyword">return</span> <span class="number">0</span><span class="special">;</span>
  275. <span class="special">}</span>
  276. </pre>
  277. </td></tr></tbody>
  278. </table></div>
  279. <div class="informaltable"><table class="table">
  280. <colgroup><col></colgroup>
  281. <thead><tr><th>
  282. <p>
  283. Output
  284. </p>
  285. </th></tr></thead>
  286. <tbody><tr><td>
  287. <pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="special">&gt;</span> <span class="identifier">example</span> <span class="special">--</span><span class="identifier">log_level</span><span class="special">=</span><span class="identifier">message</span>
  288. <span class="identifier">Running</span> <span class="number">1</span> <span class="identifier">test</span> <span class="keyword">case</span><span class="special">...</span>
  289. <span class="identifier">test</span><span class="special">.</span><span class="identifier">cpp</span><span class="special">(</span><span class="number">8</span><span class="special">):</span> <span class="identifier">error</span> <span class="identifier">in</span> <span class="string">"free_test_function"</span><span class="special">:</span> <span class="identifier">check</span> <span class="number">2</span> <span class="special">==</span> <span class="number">1</span> <span class="identifier">has</span> <span class="identifier">failed</span>
  290. <span class="identifier">Test</span> <span class="keyword">case</span> <span class="identifier">has</span> <span class="identifier">less</span> <span class="identifier">failures</span> <span class="identifier">then</span> <span class="identifier">expected</span>
  291. <span class="special">***</span> <span class="identifier">No</span> <span class="identifier">errors</span> <span class="identifier">detected</span>
  292. </pre>
  293. </td></tr></tbody>
  294. </table></div>
  295. <div class="footnotes">
  296. <br><hr style="width:100; text-align:left;margin-left: 0">
  297. <div id="ftn.boost_test.testing_tools.expected_failures.f0" class="footnote"><p><a href="#boost_test.testing_tools.expected_failures.f0" class="para"><sup class="para">[15] </sup></a>
  298. deprecated
  299. </p></div>
  300. </div>
  301. </div>
  302. <table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
  303. <td align="left"></td>
  304. <td align="right"><div class="copyright-footer">Copyright &#169; 2001-2019 Boost.Test
  305. contributors<p>
  306. Distributed under the Boost Software License, Version 1.0. (See accompanying
  307. 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>)
  308. </p>
  309. </div></td>
  310. </tr></table>
  311. <hr>
  312. <div class="spirit-nav">
  313. <a accesskey="p" href="timeout.html"><img src="../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../testing_tools.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="custom_predicates.html"><img src="../../../../../../doc/src/images/next.png" alt="Next"></a>
  314. </div>
  315. </body>
  316. </html>