CUnit-Console模式实例

上一篇学习翻译了CUnit官方文档,本篇我们来实际操作运行看看效果。正好目前正在做一个Linux的嵌入式项目,一通疯狂操作后终于把这个框架嵌入项目中了,今天主要是运行Console模式,实际效果如下:

1.菜单

1.1 主菜单
***************** CUNIT CONSOLE - MAIN MENU ******************************
(R)un  (S)elect  (L)ist  (A)ctivate  (F)ailures  (O)ptions  (H)elp  (Q)uit
Enter command: h

输入H(elp)后可以查看主菜单各个选项的说明:

Commands:  
           R - run all tests in all suites
           S - Select a suite to run or modify
           L - List all registered suites
           A - Activate or deactivate a suite (toggle)
           F - Show failures from last test run
           O - Set CUnit options
           H - Show this help message
           Q - Quit the application
1.2 Suite菜单

输入L(ist)后,可以列出当前所有注册的套件。

***************** CUNIT CONSOLE - MAIN MENU ******************************
(R)un  (S)elect  (L)ist  (A)ctivate  (F)ailures  (O)ptions  (H)elp  (Q)uit
Enter command: l
--------------------- Registered Suites -----------------------------
#  Suite Name                         Init? Cleanup? #Tests Active?

1. SuiteOS                             Yes      Yes      2     Yes
2. SuiteDsc                            Yes      Yes      4     Yes
---------------------------------------------------------------------
Total Number of Suites : 2
1.3 Test菜单

输入(S)elect后会列出注册的套件,并让你输入一个序号选择其中一个套件进入SUITE菜单。
在SUITE菜单中输入(L)ist可以列出这个套件中所有的Test。

***************** CUNIT CONSOLE - MAIN MENU ******************************
(R)un  (S)elect  (L)ist  (A)ctivate  (F)ailures  (O)ptions  (H)elp  (Q)uit
Enter command: s
--------------------- Registered Suites -----------------------------
 #  Suite Name                         Init? Cleanup? #Tests Active?

 1. SuiteOs                             Yes      Yes      2     Yes
 2. SuiteDsc                            Yes      Yes      9     Yes
---------------------------------------------------------------------
Total Number of Suites : 2

Enter number of suite to select (1-2) : 2
Suite 'SuiteDsc' selected.

***************** CUNIT CONSOLE - SUITE MENU ***************************
(R)un (S)elect (L)ist (A)ctivate (F)ailures (U)p (O)ptions (H)elp (Q)uit
Enter command: l
----------------- Test List ------------------------------
Suite: SuiteDsc

 #  Test Name                          Active?

 1. DSC_T1_OpenErr                        Yes
 2. DSC_T1_OpenSuc1                       Yes
 3. DSC_T1_OpenSuc2                       Yes
 4. DSC_T1_CloseErr                       Yes
----------------------------------------------------------
Total Number of Tests : 4

2.运行测试

2.1 执行单个Suite

在SUITE菜单中输入( R)un可以执行当前这个Suite中所有的Test。最后会生产一个简单的Run Summary。

***************** CUNIT CONSOLE - SUITE MENU ***************************
(R)un (S)elect (L)ist (A)ctivate (F)ailures (U)p (O)ptions (H)elp (Q)uit
Enter command: r
Running Suite : SuiteDsc
     Running Test : DSC_T1_OpenErr
     Running Test : DSC_T1_OpenSuc1
     Running Test : DSC_T1_OpenSuc2
     Running Test : DSC_T1_CloseErr

Run Summary:    Type  Total    Ran Passed Failed Inactive
              suites      2      1    n/a      0        0
               tests      6      4      2      2        0
             asserts     11     11      8      3      n/a

Elapsed time =    0.302 seconds
2.2 执行单个Test

当然也可以在SUITE菜单中输入(S)elect,然后再输入具体的序号选择测试其中某一个Test。最后也会生产一个Run Summary。

***************** CUNIT CONSOLE - SUITE MENU ***************************
(R)un (S)elect (L)ist (A)ctivate (F)ailures (U)p (O)ptions (H)elp (Q)uit
Enter command: s
----------------- Test List ------------------------------
Suite: SuiteDsc

 #  Test Name                          Active?

 1. DSC_T1_OpenErr                        Yes
 2. DSC_T1_OpenSuc1                       Yes
 3. DSC_T1_OpenSuc2                       Yes
 4. DSC_T1_CloseErr                       Yes
----------------------------------------------------------
Total Number of Tests : 4

Enter number of test to select (1-4) : 1
Running Suite : SuiteDsc
     Running Test : DSC_T1_OpenErr

Run Summary:    Type  Total    Ran Passed Failed Inactive
              suites      3      0    n/a      0        0
               tests     12      1      1      0        0
             asserts      1      1      1      0      n/a

Elapsed time =    0.020 seconds
2.3 执行所有Suite

在MAIN菜单中输入( R)un可以执行所有的Suite测试。最后也会生产一个Run Summary。

***************** CUNIT CONSOLE - MAIN MENU ******************************
(R)un  (S)elect  (L)ist  (A)ctivate  (F)ailures  (O)ptions  (H)elp  (Q)uit
Enter command: r
Running Suite : SuiteOS
     Running Test : OS_T1_SLEEP_1
     Running Test : OS_T1_SLEEP_2

Running Suite : SuiteDsc
     Running Test : DSC_T1_OpenErr
     Running Test : DSC_T1_OpenSuc1
     Running Test : DSC_T1_OpenSuc2
     Running Test : DSC_T1_CloseErr

Run Summary:    Type  Total    Ran Passed Failed Inactive
              suites      2      2    n/a      0        0
               tests      6      6      4      2        0
             asserts     18     18     14      4      n/a

Elapsed time =    0.407 seconds

3.失败项

每次测试结束都可以输入(F)ailures查看详细的失败项。注意,只会保存最后一次执行的测试失败项。

***************** CUNIT CONSOLE - SUITE MENU ***************************
(R)un (S)elect (L)ist (A)ctivate (F)ailures (U)p (O)ptions (H)elp (Q)uit
Enter command: f
--------------- Test Run Failures -------------------------
   src_file:line# : (suite:test) : failure_condition

1. /home/suyd/other/env/dts3452/Project_v28/ACS/ViaccessDta/UnitTest/VoUnitTestDsc.c:55 : (SuiteDsc : DSC_T1_OpenSuc1) : hDsc!=kVA_ILLEGAL_HANDLE
2. /home/suyd/other/env/dts3452/Project_v28/ACS/ViaccessDta/UnitTest/VoUnitTestDsc.c:62 : (SuiteDsc : DSC_T1_OpenSuc1) : VA_DSCR_Close(hDsc)==kVA_OK
3. /home/suyd/other/env/dts3452/Project_v28/ACS/ViaccessDta/UnitTest/VoUnitTestDsc.c:73 : (SuiteDsc : DSC_T1_OpenSuc2) : hDsc0!=kVA_ILLEGAL_HANDLE
4. /home/suyd/other/env/dts3452/Project_v28/ACS/ViaccessDta/UnitTest/VoUnitTestDsc.c:78 : (SuiteDsc : DSC_T1_OpenSuc2) : VA_DSCR_Close(hDsc0)==kVA_OK
-----------------------------------------------------------
Total Number of Failures : 4

4.源码

最后附上上面运行测试的源码,Test运行的源码我就不上传了,大家可以参考自己测试内容实现即可。

CU_ErrorCode VO_UnitTest_RegisterOs(void)
{
    CU_pSuite pSuite;
    
    mVUT_FCT_ENTER();

    pSuite = CU_add_suite("SuiteOs", VO_SuiteOS_Init, VO_SuiteOS_Clean);
    if (NULL == pSuite) {
        mVUT_RETURN(CU_get_error());
    }

    if( (NULL == CU_add_test(pSuite, "OS_T1_SLEEP_1", VO_TestOS_Case1_Sleep1)) ||
        (NULL == CU_add_test(pSuite, "OS_T1_SLEEP_2", VO_TestOS_Case1_Sleep2)) )
    {
        mVUT_RETURN(CU_get_error());
    }

    mVUT_RETURN(CUE_SUCCESS);
}

CU_ErrorCode VO_UnitTest_RegisterDsc(void)
{
    CU_ErrorCode cu_err=CUE_SUCCESS;
    
    mVUT_FCT_ENTER();
    
    CU_TestInfo test_array[] = {
      { "DSC_T1_OpenErr", VO_TestDsc_Case1_OpenErr },
      { "DSC_T1_OpenSuc1", VO_TestDsc_Case1_OpenSuc1 },
      { "DSC_T1_OpenSuc2", VO_TestDsc_Case1_OpenSuc2 },
      { "DSC_T1_CloseErr", VO_TestDsc_Case1_CloseErr },     
      CU_TEST_INFO_NULL,
    };

    CU_SuiteInfo suite_array[] = {
      { "SuiteDsc", VO_SuiteDsc_Init, VO_SuiteDsc_Clean, NULL, NULL, test_array },
      CU_SUITE_INFO_NULL,
    };

    cu_err = CU_register_suites(suite_array);
    if (cu_err!=CUE_SUCCESS)
    {
        mVUT_TRACE((kVUT_NIV_CRITICAL,"CU_register_suites failed=%d.\n",cu_err));
        mVUT_RETURN(cu_err);
    }

    mVUT_RETURN(CUE_SUCCESS);
}


CU_ErrorCode VO_UnitTest_RegisterCommands(void)
{
    CU_ErrorCode cu_err=CUE_SUCCESS;
    
    mVUT_FCT_ENTER();

    if(NULL == CU_get_registry())
    {
        mVUT_TRACE((kVUT_NIV_CRITICAL,"CU_get_registry failed\n"));
        mVUT_RETURN(CUE_NOREGISTRY);
    }

    cu_err = VO_UnitTest_RegisterOs();
    if (cu_err!=CUE_SUCCESS)
    {
        mVUT_TRACE((kVUT_NIV_CRITICAL,"VO_UnitTest_RegisterOs failed=%d.\n",cu_err));
        mVUT_RETURN(cu_err);
    }

    cu_err = VO_UnitTest_RegisterDsc();
    if (cu_err!=CUE_SUCCESS)
    {
        mVUT_TRACE((kVUT_NIV_CRITICAL,"VO_UnitTest_RegisterDsc failed=%d.\n",cu_err));
        mVUT_RETURN(cu_err);
    }

    mVUT_RETURN(CUE_SUCCESS);
}



void VO_UnitTest_EntryConsole(void)
{
    CU_ErrorCode cu_err=CUE_SUCCESS;
    
    mVUT_FCT_ENTER();

    cu_err = CU_initialize_registry();
    if (cu_err!=CUE_SUCCESS)
    {
        mVUT_TRACE((kVUT_NIV_CRITICAL,"CU_initialize_registry failed=%d.\n",cu_err));
        mVUT_RETURN;
    }

    cu_err = VO_UnitTest_RegisterCommands();
    if (cu_err!=CUE_SUCCESS)
    {
        mVUT_TRACE((kVUT_NIV_CRITICAL,"VO_UnitTest_RegisterCommands failed=%d.\n",cu_err));
        CU_cleanup_registry();
        mVUT_RETURN;
    }

    //block here, and wait for console input
    CU_console_run_tests();
    
    mVUT_TRACE((kVUT_NIV_INFO,"Test end, CU_cleanup_registry call\n"));
    CU_cleanup_registry();

    mVUT_RETURN;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值