|
@@ -1,8 +1,30 @@
|
|
|
# 实体测试
|
|
|
|
|
|
-## 功能性测试
|
|
|
+为方便实体的开发,框架中添加了实体测试的接口;
|
|
|
+
|
|
|
+## 实体测试案例添加
|
|
|
+
|
|
|
+在实体类声明定义的所在头文件中
|
|
|
+
|
|
|
+1. 引入测试所需的头文件:`#include "SpTest.h"`
|
|
|
+2. 实体类继承模板类`ITestCaseSuite<T>`
|
|
|
+3. 实体中`ITestCaseSuite`提供两个注册接口用于添加测试案例
|
|
|
+
|
|
|
+ 1. 实体中可以声明并实现若干个成员函数`void {MemberFunctionName}(CSmartPointer<ITransactionContext> pTransactionContext)`,通过调用基类的`AddTestCaseEntry`的函数进行注册;
|
|
|
+ 2. 为了与外部实体交互,实体中常常需要定义**TwoWay**的上下文结构体,`ITestCaseSuite`提供`MethodTestCaseT`模板类,使用者需要继承该类并需要测试的上下文结构体,并实现`void PreTest()`和`ErrorCodeEnum PostTest()`两个成员函数,前者给**Req**赋值,后者提供给使用者校验**Ans**返回的值.通过调用基类的`AddTestMethodEntry`函数进行注册.
|
|
|
+ 3. 为了实体能够测试其他无上下文参与的接口函数,基类还提供的`ErrorCodeEnum AdditionalTest()`函数供实际的实体类实现,在测试执行时,该函数也会一同被调用.
|
|
|
+
|
|
|
+## 实体编译
|
|
|
+
|
|
|
+编译实体并将编译后的实体库放到框架版本中
|
|
|
+
|
|
|
+## 以测试模式启动框架
|
|
|
+
|
|
|
+通过运行`spexplorertest.vbs`或者直接到*bin*目录下运行`'./spshell --test'`,让框架以**测试模式**启动
|
|
|
+
|
|
|
+如果通过`'./spshell --test'`启动,还可以在后面添加参数`'--entity {实体名称}'`单独启动想要测试的实体.
|
|
|
+
|
|
|
+## 示例
|
|
|
+
|
|
|
+更多的使用细节请参照实体:mod_sample工程下的mod_SampleEntity.h文件
|
|
|
|
|
|
-1. 实体库文件不存在;
|
|
|
-2. 实体库依赖的库文件不存在;
|
|
|
-3. 实体`OnPreStart`接口启动失败;
|
|
|
-4.
|