• <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>
  • 單元測試工具 CUnit 簡介(2)

    發表于:2015-05-07來源:uml.org.cn作者:火龍果軟件點擊數: 標簽:單元測試工具
    void test_longjmp(void){jmp_buf buf;int i;i = setjmp(buf);if (i == 0) {run_other_func();CU_PASS(run_other_func() succeeded.);}elseCU_FAIL(run_other_func() issued longjmp.);} 所有的斷言被定義在

    void test_longjmp(void)
    {
    jmp_buf buf;
    int i;
    i = setjmp(buf);
    if (i == 0) {
    run_other_func();
    CU_PASS("run_other_func() succeeded.");
    }
    else
    CU_FAIL("run_other_func() issued longjmp.");
    }

    所有的斷言被定義在<CUnit/CUnit.h>

    3. 測試注冊簿

    3.1 常用相關函數

    #include  <CUnit/TestDB.h>
    typedef struct CU_TestRegistry
    typedef CU_TestRegistry* CU_pTestRegistry
    CU_ErrorCode CU_initialize_registry(void)
    void CU_cleanup_registry(void)
    CU_BOOL CU_registry_initialized(void)
    CU_pTestRegistry CU_get_registry(void)
    CU_pTestRegistry CU_set_registry(CU_pTestRegistry pTestRegistry)
    CU_pTestRegistry CU_create_new_registry(void)
    void CU_destroy_existing_registry(CU_pTestRegistry* ppRegistry)

    3.2 注冊簿內部結構體

    測試注冊簿是測試包和相關測試用例的倉庫。當用戶添加測試包或測試用例時,CUnit維護當前活動的測試注冊簿的狀態更新,當用戶選擇運行所有測試用例時,當前活動的注冊簿中所有的測試包均被執行。

    測試注冊簿結構在<CUnit_TestDB.h>中定義,它包括所有測試包的數量、所有測試用例的數量以及一個指向該注冊簿中測試包鏈表的指針:

    typedef struct CU_TestRegistry
    {
    unsigned int uiNumberOfSuites;
    unsigned int uiNumberOfTests;
    CU_pSuite    pSuite;
    } CU_TestRegistry;
    typedef CU_TestRegistry* CU_pTestRegistry;

    3.3 與注冊簿相關的其它函數

    CU_pTestRegistry CU_get_registry(void)
    CU_pTestRegistry CU_set_registry(CU_pTestRegistry pTestRegistry)
    CU_pTestRegistry CU_create_new_registry(void)
    void CU_destroy_existing_registry(CU_pTestRegistry* ppRegistry)

    4. 測試包及測試用例的管理

    4.1 相關函數及結構

    #include <CUnit/TestDB.h>
    typedef struct CU_Suite
    typedef CU_Suite* CU_pSuite
    typedef struct CU_Test
    typedef CU_Test* CU_pTest
    typedef void (*CU_TestFunc)(void)
    typedef int (*CU_InitializeFunc)(void)
    typedef int (*CU_CleanupFunc)(void)
    CU_pSuite CU_add_suite(const char* strName,CU_InitializeFunc pInit,CU_CleanupFunc pClean);
    CU_pTest   CU_add_test(CU_pSuite pSuite,const char* strName,CU_TestFunc pTestFunc);
    typedef struct CU_TestInfo
    typedef struct CU_SuiteInfo
    CU_ErrorCode CU_register_suites(CU_SuiteInfo suite_info[]);
    CU_ErrorCode CU_register_nsuites(int suite_count, ...);
    CU_ErrorCode CU_set_suite_active(CU_pSuite pSuite, CU_BOOL fNewActive)
    CU_ErrorCode CU_set_test_active(CU_pTest, CU_BOOL fNewActive)
    CU_ErrorCode CU_set_suite_name(CU_pSuite pSuite, const char *strNewName)
    CU_ErrorCode CU_set_suite_initfunc(CU_pSuite pSuite, CU_InitializeFunc pNewInit)
    CU_ErrorCode CU_set_suite_cleanupfunc(CU_pSuite pSuite, CU_CleanupFunc pNewClean)
    CU_ErrorCode CU_set_test_name(CU_pTest pTest, const char *strNewName)
    CU_ErrorCode CU_set_test_func(CU_pTest pTest, CU_TestFunc pNewFunc)
    CU_pSuite CU_get_suite(const char* strName)
    CU_pSuite CU_get_suite_at_pos(unsigned int pos)
    unsigned int CU_get_suite_pos(CU_pSuite pSuite)
    unsigned int CU_get_suite_pos_by_name(const char* strName)
    CU_pTest CU_get_test(CU_pSuite pSuite, const char *strName)
    CU_pTest CU_get_test_at_pos(CU_pSuite pSuite, unsigned int pos)
    unsigned int CU_get_test_pos(CU_pSuite pSuite, CU_pTest pTest)
    unsigned int CU_get_test_pos_by_name(CU_pSuite pSuite, const char *strName)

    4.2 注冊測試包

    CU_pSuite CU_add_suite(const char* strName, CU_InitializeFunc    pInit, CU_CleanupFunc pClean)

    原文轉自:http://www.uml.org.cn/Test/201404151.asp

    老湿亚洲永久精品ww47香蕉图片_日韩欧美中文字幕北美法律_国产AV永久无码天堂影院_久久婷婷综合色丁香五月

  • <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>