C++单元测试、压力测试、快速测试工具

由于项目中一直要进行单元测试,适合C++的单元测试工具屈指可数,所以自己学习Ununit写了一个单元测试工具,这个工具同时具有压力测试、快速测试的功能,欢迎大家试用,有什么问题可以反馈给我我一一修复,后期考虑开源,谢谢!


引用

设计思路:
利用某一个EXE去加载n个DLL,exe采用的是动态加载,用户把AP的名称定义在config文件中去,这样可以动态价格全部API。
所以API的接口必须保持一致,不然无法加载test case.


API 接口设计如下:

引用

DWORD TestCase_01(BYTE* pByInBuffer,
DWORD dwInSize,
BYTE* pByOutBuffer,
DWORD* pdwOutSize);

Return: 返回的是Error Code
Input: 传给API的特殊数据
Output:这是是返回的用户的需要输出的String buffer;最大支持4KB;





引用

Config File Definition:
引用

[TestCase]
0001=CaseName_0001
.
.
.
9999=CaseName_9999

[SmokeTest]
0001=CaseName_0001
.
.
.
0002=CaseName_00XX


[StressTest]
0001= CaseName_0001 ;The test case run as stress test modek
CaseName_0001=99 ;Try to run several times
.
.
.
XXXX= CaseName_XXXX
CaseName_XXXX=10



TestCase: Means all test cases
SmokeTest:Meas all quick test case
StressTest: Means all stress test cases





DLL编写示范


/*************************************************************************************************/
/*!
    \file TestCase02.h

    \attention
        Copyright (c) 2016  Jacky_Dai.
        All Rights Reserved.
*/
/*************************************************************************************************/
#ifndef TESTCASE_02_H
#define TESTCASE_02_H

/*** Defines/Macros/Constants/Typedefs ***********************************************************/
#ifdef TESTSTDDLL2_EXPORTS
#define TESTCASE_API __declspec(dllexport)
#else
#define TESTCASE_API __declspec(dllimport)
#endif

//Include Head files
//////////////////////////////////////////////////////////////////////////
#include <Windows.h>



#ifdef __cplusplus
extern "C"
{
#endif


TESTCASE_API DWORD TestCase2_01(BYTE* pByInBuffer,
                               DWORD dwInSize,
                               BYTE* pByOutBuffer,
                               DWORD* pdwOutSize);

TESTCASE_API DWORD TestCase2_05(BYTE* pByInBuffer,
                                DWORD dwInSize,
                                BYTE* pByOutBuffer,
                                DWORD* pdwOutSize);

TESTCASE_API DWORD TestCase2_07(BYTE* pByInBuffer,
                                DWORD dwInSize,
                                BYTE* pByOutBuffer,
                                DWORD* pdwOutSize);

TESTCASE_API DWORD TestCase2_08(BYTE* pByInBuffer,
                                DWORD dwInSize,
                                BYTE* pByOutBuffer,
                                DWORD* pdwOutSize);

TESTCASE_API DWORD TestCase2_XX(BYTE* pByInBuffer,
                                DWORD dwInSize,
                                BYTE* pByOutBuffer,
                                DWORD* pdwOutSize);

#ifdef __cplusplus
}
#endif

#endif//TESTCASE_02_H





#include "TestCase02.h"

DWORD TestCase2_01(BYTE* pByInBuffer,
                   DWORD dwInSize,
                   BYTE* pByOutBuffer,
                   DWORD* pdwOutSize)
{
    if (pdwOutSize != NULL)
    {
        *pdwOutSize = 0;
    }

    return 0x0201;
}


DWORD TestCase2_05(BYTE* pByInBuffer,
                   DWORD dwInSize,
                   BYTE* pByOutBuffer,
                   DWORD* pdwOutSize)
{
    if (pdwOutSize != NULL)
    {
        *pdwOutSize = 0;
    }

    Sleep(500);
    return 0x0205;
}

DWORD TestCase2_07(BYTE* pByInBuffer,
                   DWORD dwInSize,
                   BYTE* pByOutBuffer,
                   DWORD* pdwOutSize)
{
    if (pdwOutSize != NULL)
    {
        *pdwOutSize = 0;
    }

    Sleep(500);
    return 0x0207;
}

DWORD TestCase2_08(BYTE* pByInBuffer,
                   DWORD dwInSize,
                   BYTE* pByOutBuffer,
                   DWORD* pdwOutSize)
{
    if (pdwOutSize != NULL)
    {
        *pdwOutSize = 0;
    }

    return 0x0208;
}

DWORD TestCase2_XX(BYTE* pByInBuffer,
                   DWORD dwInSize,
                   BYTE* pByOutBuffer,
                   DWORD* pdwOutSize)
{
    if (pdwOutSize != NULL)
    {
        *pdwOutSize = 0;
    }

    Sleep(500);
    return 0x0000;
}

猜你喜欢

转载自jacky-dai.iteye.com/blog/2276461
今日推荐