引用
设计思路:
利用某一个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; }