group__rcunit__write__test__suite.html
来自「一个做软件测试的源码,可以用于工程中软件测试,全部为自己编写,内付说明」· HTML 代码 · 共 253 行
HTML
253 行
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html><head><meta http-equiv="Content-Type" content="text/html;charset=gb2312"><title>RCUnit: 编写测试集和测试用例</title><link href="doxygen.css" rel="stylesheet" type="text/css"></head><body><!-- 制作者 Doxygen 1.4.2 --><div class="qindex"><a class="qindex" href="index.html">首页</a> | <a class="qindex" href="modules.html">模块</a> | <a class="qindex" href="annotated.html">数据结构</a> | <a class="qindex" href="dirs.html">目录</a> | <a class="qindex" href="files.html">文件列表</a> | <a class="qindex" href="functions.html">数据字段</a> | <a class="qindex" href="globals.html">全局定义</a> | <a class="qindex" href="pages.html">相关页面</a></div><h1>编写测试集和测试用例</h1><p><table border="0" cellpadding="0" cellspacing="0"><tr><td></td></tr><tr><td colspan="2"><br><h2>宏定义</h2></td></tr><tr><td class="memItemLeft" nowrap align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group__rcunit__write__test__suite.html#ga0">CUNIT_TEST_SUITE_BEGIN</a>(SuiteName)</td></tr><tr><td class="mdescLeft"> </td><td class="mdescRight">声明新的测试集(Test Suite)。. <a href="#ga0"></a><br></td></tr><tr><td class="memItemLeft" nowrap align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group__rcunit__write__test__suite.html#ga1">CUNIT_HANDLE_SET_UP</a>(func)</td></tr><tr><td class="mdescLeft"> </td><td class="mdescRight">注册执行该测试集(Test Suite)的测试用例之前需要调用的函数。 <a href="#ga1"></a><br></td></tr><tr><td class="memItemLeft" nowrap align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group__rcunit__write__test__suite.html#ga2">CUNIT_HANDLE_TEAR_DOWN</a>(func)</td></tr><tr><td class="mdescLeft"> </td><td class="mdescRight">注册执行该测试集(Test Suite)的测试用例之后需要调用的函数。 <a href="#ga2"></a><br></td></tr><tr><td class="memItemLeft" nowrap align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group__rcunit__write__test__suite.html#ga3">CUNIT_TEST</a>(CaseFunc)</td></tr><tr><td class="mdescLeft"> </td><td class="mdescRight">在测试集(Test Suite)中加入测试用例。. <a href="#ga3"></a><br></td></tr><tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="ga4" doxytag="rcunit_write_test_suite::CUNIT_TEST_SUITE_END"></a>#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group__rcunit__write__test__suite.html#ga4">CUNIT_TEST_SUITE_END</a>()</td></tr><tr><td class="mdescLeft"> </td><td class="mdescRight">结束声明新的测试集(Test Suite)。 <br></td></tr></table><hr><h2>宏定义文档</h2><a class="anchor" name="ga1" doxytag="rcunit_suite.h::CUNIT_HANDLE_SET_UP"></a><p><table class="mdTable" cellpadding="2" cellspacing="0"> <tr> <td class="mdRow"> <table cellpadding="0" cellspacing="0" border="0"> <tr> <td class="md" nowrap valign="top">#define CUNIT_HANDLE_SET_UP </td> <td class="md" valign="top">( </td> <td class="md" nowrap valign="top">func </td> <td class="mdname1" valign="top" nowrap> </td> <td class="md" valign="top"> ) </td> <td class="md" nowrap></td> </tr> </table> </td> </tr></table><table cellspacing="5" cellpadding="0" border="0"> <tr> <td> </td> <td><p><b>值:</b><div class="fragment"><pre class="fragment"><span class="keywordflow">do</span> \ { \ _CUNIT_DECLARE_TEST_SUITE_EVENT_HANDLER_FUNC(func); \ stTestSuite.setUp = func; \ } \ <span class="keywordflow">while</span> (0)</pre></div>注册执行该测试集(Test Suite)的测试用例之前需要调用的函数。 <p><dl compact><dt><b>参数:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"><tt>[in]</tt> </td><td valign="top"><em>func</em> </td><td>待注册的函数名。 </td></tr> </table></dl><dl compact><dt><b>注解:</b></dt><dd>即使测试用例执行失败也会继续执行这个函数。 <p>如果在同一个测试集的声明中重复使用这个宏,测试集只会保留最后一个注册的函数 </dd></dl><p>在文件<a class="el" href="rcunit__suite_8h-source.html">rcunit_suite.h</a>第<a class="el" href="rcunit__suite_8h-source.html#l00134">134</a>行定义。 </td> </tr></table><a class="anchor" name="ga2" doxytag="rcunit_suite.h::CUNIT_HANDLE_TEAR_DOWN"></a><p><table class="mdTable" cellpadding="2" cellspacing="0"> <tr> <td class="mdRow"> <table cellpadding="0" cellspacing="0" border="0"> <tr> <td class="md" nowrap valign="top">#define CUNIT_HANDLE_TEAR_DOWN </td> <td class="md" valign="top">( </td> <td class="md" nowrap valign="top">func </td> <td class="mdname1" valign="top" nowrap> </td> <td class="md" valign="top"> ) </td> <td class="md" nowrap></td> </tr> </table> </td> </tr></table><table cellspacing="5" cellpadding="0" border="0"> <tr> <td> </td> <td><p><b>值:</b><div class="fragment"><pre class="fragment"><span class="keywordflow">do</span> \ { \ _CUNIT_DECLARE_TEST_SUITE_EVENT_HANDLER_FUNC(func); \ stTestSuite.tearDown = func; \ } \ <span class="keywordflow">while</span> (0)</pre></div>注册执行该测试集(Test Suite)的测试用例之后需要调用的函数。 <p><dl compact><dt><b>参数:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"><tt>[in]</tt> </td><td valign="top"><em>func</em> </td><td>待注册的函数名。 </td></tr> </table></dl><dl compact><dt><b>注解:</b></dt><dd>即使测试用例执行失败也会继续执行这个函数。 <p>如果在同一个测试集的声明中重复使用这个宏,测试集只会保留最后一个注册的函数 </dd></dl><p>在文件<a class="el" href="rcunit__suite_8h-source.html">rcunit_suite.h</a>第<a class="el" href="rcunit__suite_8h-source.html#l00142">142</a>行定义。 </td> </tr></table><a class="anchor" name="ga3" doxytag="rcunit_suite.h::CUNIT_TEST"></a><p><table class="mdTable" cellpadding="2" cellspacing="0"> <tr> <td class="mdRow"> <table cellpadding="0" cellspacing="0" border="0"> <tr> <td class="md" nowrap valign="top">#define CUNIT_TEST </td> <td class="md" valign="top">( </td> <td class="md" nowrap valign="top">CaseFunc </td> <td class="mdname1" valign="top" nowrap> </td> <td class="md" valign="top"> ) </td> <td class="md" nowrap></td> </tr> </table> </td> </tr></table><table cellspacing="5" cellpadding="0" border="0"> <tr> <td> </td> <td><p><b>值:</b><div class="fragment"><pre class="fragment"><span class="keywordflow">do</span> \ { \ _CUNIT_DECLARE_TEST_CASE_FUNC(CaseFunc); \ <a class="code" href="rcunit__proc_8c.html#a4">_CUnit_AddTestCase</a>(&stTestSuite, (CaseFunc), #CaseFunc); \ } \ <span class="keywordflow">while</span> (0)</pre></div>在测试集(Test Suite)中加入测试用例。. <p><dl compact><dt><b>参数:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"><tt>[in]</tt> </td><td valign="top"><em>CaseFunc</em> </td><td>测试函数的函数名。 </td></tr> </table></dl><p>在文件<a class="el" href="rcunit__suite_8h-source.html">rcunit_suite.h</a>第<a class="el" href="rcunit__suite_8h-source.html#l00150">150</a>行定义。 </td> </tr></table><a class="anchor" name="ga0" doxytag="rcunit_suite.h::CUNIT_TEST_SUITE_BEGIN"></a><p><table class="mdTable" cellpadding="2" cellspacing="0"> <tr> <td class="mdRow"> <table cellpadding="0" cellspacing="0" border="0"> <tr> <td class="md" nowrap valign="top">#define CUNIT_TEST_SUITE_BEGIN </td> <td class="md" valign="top">( </td> <td class="md" nowrap valign="top">SuiteName </td> <td class="mdname1" valign="top" nowrap> </td> <td class="md" valign="top"> ) </td> <td class="md" nowrap></td> </tr> </table> </td> </tr></table><table cellspacing="5" cellpadding="0" border="0"> <tr> <td> </td> <td><p><b>值:</b><div class="fragment"><pre class="fragment"><a class="code" href="struct____tagCUnitTestSuite.html">__CUNIT_TEST_SUITE_S</a> * _CUNIT_GET_TEST_CASE_LIST_FUNC_NAME(SuiteName) () \ { \ <span class="keyword">static</span> <a class="code" href="struct____tagCUnitTestSuite.html">__CUNIT_TEST_SUITE_S</a> stTestSuite = {0};\ <span class="keyword">static</span> <span class="keywordtype">char</span> * szSuiteName = #SuiteName; \ <span class="keyword">static</span> <span class="keywordtype">int</span> count = 0; <span class="comment">/* ensure this function invoked only once */</span> \ <span class="keywordflow">if</span> (!count) \ { \ stTestSuite.<a class="code" href="struct____tagCUnitTestSuite.html#o2">setUp</a> = <a class="code" href="rcunit__proc_8c.html#a6">_CUnit_Dummy_Event_Handler</a>; \ stTestSuite.<a class="code" href="struct____tagCUnitTestSuite.html#o3">tearDown</a> = <a class="code" href="rcunit__proc_8c.html#a6">_CUnit_Dummy_Event_Handler</a></pre></div>声明新的测试集(Test Suite)。. <p><dl compact><dt><b>参数:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"><tt>[in]</tt> </td><td valign="top"><em>SuiteName</em> </td><td>测试集的名称。请直接写一个合法的C语言变量名作为测试集名称,而不需要用引号括起来。 </td></tr> </table></dl><dl compact><dt><b>使用方法:</b></dt><dd><div class="fragment"><pre class="fragment"> <a class="code" href="group__rcunit__write__test__suite.html#ga0">CUNIT_TEST_SUITE_BEGIN</a>(MySuiteName); <span class="comment">// NOTE: write YourSuiteName directly without quote</span> <a class="code" href="group__rcunit__write__test__suite.html#ga1">CUNIT_HANDLE_SET_UP</a>(MySetUpFunc); <span class="comment">// Execute this function before running the test cases in this suite</span> <a class="code" href="group__rcunit__write__test__suite.html#ga2">CUNIT_HANDLE_TEAR_DOWN</a>(MyTearDownFunc); <span class="comment">// Execute this function after running the test cases in this suite</span> <a class="code" href="group__rcunit__write__test__suite.html#ga3">CUNIT_TEST</a>(MyTestCase_Normal); <span class="comment">// My normal test case</span> <a class="code" href="group__rcunit__write__test__suite.html#ga3">CUNIT_TEST</a>(MyTestCase_Abnormal); <span class="comment">// My abnormal test case</span> <span class="comment">// and so on...</span> <a class="code" href="group__rcunit__write__test__suite.html#ga4">CUNIT_TEST_SUITE_END</a>(); CUNIT_DECL_TEST <span class="keywordtype">void</span> MySetUpFunc() { <span class="comment">// do something job before execute test case</span> <span class="comment">// e.g. reset global variants, alloc some resources...</span> } CUNIT_DECL_TEST <span class="keywordtype">void</span> MyTearDownFunc() { <span class="comment">// do something job after execute test case</span> <span class="comment">// e.g. free resources...</span> } CUNIT_DECL_TEST <span class="keywordtype">void</span> MyTestCase_Normal() { <span class="comment">// a normal case</span> <a class="code" href="group__rcunit__making__assertion.html#ga0">CUNIT_ASSERT_EQUAL</a>(1, 1); <span class="comment">// just a sample</span> } CUNIT_DECL_TEST <span class="keywordtype">void</span> MyTestCase_Abnormal() { <span class="comment">// an abnormal case</span> <a class="code" href="group__rcunit__making__assertion.html#ga0">CUNIT_ASSERT_EQUAL</a>(1, 2); <span class="comment">// just a sample</span> }</pre></div> </dd></dl><p>在文件<a class="el" href="rcunit__suite_8h-source.html">rcunit_suite.h</a>第<a class="el" href="rcunit__suite_8h-source.html#l00123">123</a>行定义。 </td> </tr></table><hr/><table width="100%"> <tr> <td align="right" valign="center"> 如果对 RCUnit 有任何的疑问或建议,请联系realdodo (<a href="mailto:realdodo@163.com">realdodo@163.com</a>)。 </td> </tr></table></body> </html>
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?