?? class_test_listener.html
字號:
<html><head><title>CppUnit - The Unit Testing Library</title><link href="doxygen.css" rel="stylesheet" type="text/css"></head><body bgcolor="#ffffff"> <table width="100%"> <tr> <td width="40%" align="left" valign="center"> <a href="http://sourceforge.net/projects/cppunit"> CppUnit project page </a> </td> <td> <a href="FAQ">FAQ</a> </td> <td width="40%" align="right" valign="center"> <a href="http://cppunit.sourceforge.net">CppUnit home page</a> </td> </tr></table><hr><!-- Generated by Doxygen 1.3.7 --><div class="qindex"><a class="qindex" href="index.html">Main Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="namespaces.html">Namespace List</a> | <a class="qindex" href="hierarchy.html">Class Hierarchy</a> | <a class="qindex" href="classes.html">Alphabetical List</a> | <a class="qindex" href="annotated.html">Class List</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="namespacemembers.html">Namespace Members</a> | <a class="qindex" href="functions.html">Class Members</a> | <a class="qindex" href="globals.html">File Members</a> | <a class="qindex" href="pages.html">Related Pages</a></div><h1>TestListener Class Reference<br><small>[<a class="el" href="group___tracking_test_execution.html">Tracking test execution</a>]</small></h1>Listener for test progress and result. <a href="#_details">More...</a><p><code>#include <<a class="el" href="_test_listener_8h-source.html">TestListener.h</a>></code><p><p>Inheritance diagram for TestListener:<p><center><img src="class_test_listener.png" usemap="#TestListener_map" border="0" alt=""></center><map name="TestListener_map"><area href="class_brief_test_progress_listener.html" alt="BriefTestProgressListener" shape="rect" coords="0,56,158,80"><area href="class_test_success_listener.html" alt="TestSuccessListener" shape="rect" coords="168,56,326,80"><area href="class_text_test_progress_listener.html" alt="TextTestProgressListener" shape="rect" coords="336,56,494,80"><area href="class_test_result_collector.html" alt="TestResultCollector" shape="rect" coords="168,112,326,136"><area href="class_text_test_result.html" alt="TextTestResult" shape="rect" coords="168,168,326,192"></map><a href="class_test_listener-members.html">List of all members.</a><table border=0 cellpadding=0 cellspacing=0><tr><td></td></tr><tr><td colspan=2><br><h2>Public Member Functions</h2></td></tr><tr><td class="memItemLeft" nowrap align=right valign=top>virtual </td><td class="memItemRight" valign=bottom><a class="el" href="class_test_listener.html#a0">~TestListener</a> ()</td></tr><tr><td class="memItemLeft" nowrap align=right valign=top>virtual void </td><td class="memItemRight" valign=bottom><a class="el" href="class_test_listener.html#a1">startTest</a> (<a class="el" href="class_test.html">Test</a> *test)</td></tr><tr><td class="mdescLeft"> </td><td class="mdescRight">Called when just before a <a class="el" href="class_test_case.html">TestCase</a> is run. <a href="#a1"></a><br><br></td></tr><tr><td class="memItemLeft" nowrap align=right valign=top>virtual void </td><td class="memItemRight" valign=bottom><a class="el" href="class_test_listener.html#a2">addFailure</a> (const <a class="el" href="class_test_failure.html">TestFailure</a> &failure)</td></tr><tr><td class="mdescLeft"> </td><td class="mdescRight">Called when a failure occurs while running a test. <a href="#a2"></a><br><br></td></tr><tr><td class="memItemLeft" nowrap align=right valign=top>virtual void </td><td class="memItemRight" valign=bottom><a class="el" href="class_test_listener.html#a3">endTest</a> (<a class="el" href="class_test.html">Test</a> *test)</td></tr><tr><td class="mdescLeft"> </td><td class="mdescRight">Called just after a <a class="el" href="class_test_case.html">TestCase</a> was run (even if a failure occured). <a href="#a3"></a><br><br></td></tr><tr><td class="memItemLeft" nowrap align=right valign=top>virtual void </td><td class="memItemRight" valign=bottom><a class="el" href="class_test_listener.html#a4">startSuite</a> (<a class="el" href="class_test.html">Test</a> *suite)</td></tr><tr><td class="mdescLeft"> </td><td class="mdescRight">Called by a <a class="el" href="class_test_composite.html">TestComposite</a> just before running its child tests. <a href="#a4"></a><br><br></td></tr><tr><td class="memItemLeft" nowrap align=right valign=top>virtual void </td><td class="memItemRight" valign=bottom><a class="el" href="class_test_listener.html#a5">endSuite</a> (<a class="el" href="class_test.html">Test</a> *suite)</td></tr><tr><td class="mdescLeft"> </td><td class="mdescRight">Called by a <a class="el" href="class_test_composite.html">TestComposite</a> after running its child tests. <a href="#a5"></a><br><br></td></tr><tr><td class="memItemLeft" nowrap align=right valign=top>virtual void </td><td class="memItemRight" valign=bottom><a class="el" href="class_test_listener.html#a6">startTestRun</a> (<a class="el" href="class_test.html">Test</a> *test, <a class="el" href="class_test_result.html">TestResult</a> *eventManager)</td></tr><tr><td class="mdescLeft"> </td><td class="mdescRight">Called by a <a class="el" href="class_test_runner.html">TestRunner</a> before running the test. <a href="#a6"></a><br><br></td></tr><tr><td class="memItemLeft" nowrap align=right valign=top>virtual void </td><td class="memItemRight" valign=bottom><a class="el" href="class_test_listener.html#a7">endTestRun</a> (<a class="el" href="class_test.html">Test</a> *test, <a class="el" href="class_test_result.html">TestResult</a> *eventManager)</td></tr><tr><td class="mdescLeft"> </td><td class="mdescRight">Called by a <a class="el" href="class_test_runner.html">TestRunner</a> after running the test. <a href="#a7"></a><br><br></td></tr></table><hr><a name="_details"></a><h2>Detailed Description</h2>Listener for test progress and result. <p>Implementing the Observer pattern a TestListener may be registered to a <a class="el" href="class_test_result.html">TestResult</a> to obtain information on the testing progress. Use specialized sub classes of TestListener for text output (<a class="el" href="class_text_test_progress_listener.html">TextTestProgressListener</a>). Do not use the Listener for the test result output, use a subclass of <a class="el" href="class_outputter.html">Outputter</a> instead.<p>The test framework distinguishes between failures and errors. A failure is anticipated and checked for with assertions. Errors are unanticipated problems signified by exceptions that are not generated by the framework.<p>Here is an example to track test time:<p><pre><div class="fragment"><span class="preprocessor"> #include <<a class="code" href="_test_listener_8h.html">cppunit/TestListener.h</a>></span><span class="preprocessor"> #include <<a class="code" href="_test_8h.html">cppunit/Test.h</a>></span><span class="preprocessor"> #include <time.h></span> <span class="comment">// for clock()</span> <span class="keyword">class </span>TimingListener : <span class="keyword">public</span> CppUnit::<a class="code" href="class_test_listener.html">TestListener</a> { <span class="keyword">public</span>: <span class="keywordtype">void</span> startTest( CppUnit::Test *test ) { _chronometer.start(); } <span class="keywordtype">void</span> endTest( CppUnit::Test *test ) { _chronometer.end(); addTest( test, _chronometer.elapsedTime() ); } <span class="comment">// ... (interface to add/read test timing result)</span> <span class="keyword">private</span>: Clock _chronometer; };</div></pre><p>And another example that track failure/success at test suite level and captures the <a class="el" href="class_test_path.html">TestPath</a> of each suite: <pre><div class="fragment"> <span class="keyword">class </span>SuiteTracker : <span class="keyword">public</span> CppUnit::<a class="code" href="class_test_listener.html">TestListener</a> { <span class="keyword">public</span>: <span class="keywordtype">void</span> startSuite( CppUnit::Test *suite ) { m_currentPath.add( suite ); } <span class="keywordtype">void</span> addFailure( <span class="keyword">const</span> <a class="code" href="class_test_failure.html">TestFailure</a> &failure ) { m_suiteFailure.top() = <span class="keyword">false</span>; } <span class="keywordtype">void</span> endSuite( CppUnit::Test *suite ) { m_suiteStatus.insert( std::make_pair( suite, m_suiteFailure.top() ) ); m_suitePaths.insert( std::make_pair( suite, m_currentPath ) ); m_currentPath.up(); m_suiteFailure.pop(); } <span class="keyword">private</span>: std::stack<bool> m_suiteFailure; CppUnit::TestPath m_currentPath; std::map<CppUnit::Test *, bool> m_suiteStatus; std::map<CppUnit::Test *, CppUnit::TestPath> m_suitePaths; };</div></pre><p><dl compact><dt><b>See also:</b></dt><dd><a class="el" href="class_test_result.html">TestResult</a> </dd></dl><p><hr><h2>Constructor & Destructor Documentation</h2><a class="anchor" name="a0" doxytag="TestListener::~TestListener" ></a><p><table class="mdTable" width="100%" cellpadding="2" cellspacing="0"> <tr> <td class="mdRow"> <table cellpadding="0" cellspacing="0" border="0"> <tr> <td class="md" nowrap valign="top"> virtual TestListener::~<a class="el" href="class_test_listener.html">TestListener</a> </td> <td class="md" valign="top">( </td> <td class="mdname1" valign="top" nowrap> </td> <td class="md" valign="top"> ) </td> <td class="md" nowrap><code> [inline, virtual]</code></td> </tr> </table> </td> </tr></table><table cellspacing=5 cellpadding=0 border=0> <tr> <td> </td> <td><p> </td> </tr></table><hr><h2>Member Function Documentation</h2><a class="anchor" name="a2" doxytag="TestListener::addFailure" ></a><p><table class="mdTable" width="100%" cellpadding="2" cellspacing="0"> <tr> <td class="mdRow"> <table cellpadding="0" cellspacing="0" border="0"> <tr> <td class="md" nowrap valign="top"> virtual void TestListener::addFailure </td> <td class="md" valign="top">( </td> <td class="md" nowrap valign="top">const <a class="el" href="class_test_failure.html">TestFailure</a> & </td> <td class="mdname1" valign="top" nowrap> <em>failure</em> </td> <td class="md" valign="top"> ) </td> <td class="md" nowrap><code> [inline, virtual]</code></td> </tr> </table> </td> </tr></table><table cellspacing=5 cellpadding=0 border=0> <tr> <td> </td> <td><p>Called when a failure occurs while running a test. <p><dl compact><dt><b>See also:</b></dt><dd><a class="el" href="class_test_failure.html">TestFailure</a>. </dd></dl><dl compact><dt><b>Warning:</b></dt><dd><em>failure</em> is a temporary object that is destroyed after the method call. Use TestFailure::clone() to create a duplicate. </dd></dl><p>Reimplemented in <a class="el" href="class_brief_test_progress_listener.html#a3">BriefTestProgressListener</a>, <a class="el" href="class_test_result_collector.html#a3">TestResultCollector</a>, <a class="el" href="class_test_success_listener.html#a3">TestSuccessListener</a>, <a class="el" href="class_text_test_progress_listener.html#a3">TextTestProgressListener</a>, and <a class="el" href="class_text_test_result.html#a1">TextTestResult</a>. </td> </tr></table><a class="anchor" name="a5" doxytag="TestListener::endSuite" ></a><p><table class="mdTable" width="100%" cellpadding="2" cellspacing="0"> <tr> <td class="mdRow"> <table cellpadding="0" cellspacing="0" border="0"> <tr> <td class="md" nowrap valign="top"> virtual void TestListener::endSuite </td> <td class="md" valign="top">( </td> <td class="md" nowrap valign="top"><a class="el" href="class_test.html">Test</a> * </td> <td class="mdname1" valign="top" nowrap> <em>suite</em> </td> <td class="md" valign="top"> ) </td> <td class="md" nowrap><code> [inline, virtual]</code></td> </tr> </table> </td> </tr></table><table cellspacing=5 cellpadding=0 border=0> <tr> <td> </td> <td>
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -