在构造过程中驱动器需要一个观察器。对参数可使用伪排除(查看附录A的详细介绍)。释放资源时执行销毁。
void CMapExampleSmsEngineTest::tearDown() { delete iTarget; delete iObserver; } |
首先应拿来测试的实例是短信发送。这是个很简单的过程:该函数被调用而且如果他没有退出(抛出异常)那么这个测试用例就通过了。
void CMapExampleSmsEngineTest::testSendMessage() { iTarget->SendSmsL(_L("12345678"), _L("abcd")); } |
短信发送可能会失败。RSendAsMessage::SetBodyTextL()可被退出以模拟异常。然后执行测试实例来确保SendSmsL退出。尽管如此,仅在测试实例里SetBodyTextL才能退出而且测试实例应控制该过程。实现控制的一种方法是运用全局变量,在调用测试目标时设置该测试实例,然后在变量的基础上实现SetBodyTextL。另一种更普遍的方法是定义一个全局函数指针,该指针在定义时被SetBodyTextL调用。测试实例代码如下:
// global function pointer |
该测试实例首先为此函数定义一个会退出函数指针,然后调用SendSmsL。此调用在测试宏(assert macro)内封装。该宏会检测微囊代码抛出异常。如果不这样做,系统会向测试框架报错测试没有通过。
相关链接: