使用GTest对回调进行单元测试
Unit Test for Callback using GTest
这是使用Bonjour在网络中进行设备发现库的类设计。我需要使用GTest开发测试用例。我是GTEst的新手。
-
客户端程序需要实现IDeviceEnumerationCallback来接收设备信息
-
回调将在间隔时间和频率之后被调用假设间隔为200ms,频率为2。它将在200毫秒后调用两次回调。
class IDeviceEnumerationCallback { public: /* This callback is called when Device are Enumerated and is regsitered in EnumerateWiFiDevice method */ virtual void onDeviceDiscovered( DeviceInfo* pDeviceInfo,unsigned short nNoOfDevice,void* pContext) = 0; }; IDeviceDiscovery { virtual int InitialiseDeviceDiscovery(IDeviceEnumerationCallback*) = 0; virtual void UnInitialiseDeviceDiscovery() = 0; virtual int EnumerateDevice() = 0; virtual void SetDiscoveryInterval(unsigned long nDiscoveryInterval); virtual void SetDiscoveryFrequency(unsigned short nFrequency); virtual unsigned long GettDiscoveryInterval(); virtual unsigned short GettDiscoveryFrequency(); } class CDeviceDiscovery : public IDeviceDiscovery { // implemenation }
当我为EnumerateDevice()开发单元测试时,它将立即返回说-1或1。但是结果将在回调中返回。如何使用GTest知道Device是否被正确枚举。我需要GTest Mock在这里吗??
可以使用Gmock。一个很好的解释可以在这个页面上找到:http://code.google.com/p/googlemock/wiki/ForDummies
你会模拟IDeviceEnumerationCallback
#include <gmock/gmock.h>
class MockIDeviceEnumerationCallback : public IDeviceEnumerationCallback
{
public:
MOCK_METHOD3(onDeviceDiscovered, void(DeviceInfo* pDeviceInfo,unsigned short nNoOfDevice,void* pContext));
};
并期望使用
调用函数MockIDeviceEnumerationCallback mock;
EXPECT_CALL(mock, onDeviceDiscovered(_, _, _))
.WillOnce(Return(1));
相关文章:
- 架构决策:返回std::future还是提供回调
- 正在为Xtensa simcall函数编写回调函数
- 如何在C++中使用非静态成员函数作为回调函数
- 有什么好的方法可以让系统调用代理允许在单元测试中进行模拟
- 在子目录中使用target_sources()命令时用于单元测试(qtest)的项目结构
- VC++本机单元测试,找不到调试符号
- FLTK:按下哪个按钮 - 将数字传递给按钮的回调 (lambda)
- 用于交叉编译和CMake的预处理器宏的单元测试
- 在简单示例中,Python3 + ctypes 回调会导致内存泄漏
- C++ 用于单元测试的模板模板
- 提升 1.64 单元测试编译失败
- 用于在回调中调用解析器的设计模式
- 如何使用C++对象的成员函数作为 C 样式回调?
- 线程池的计时测试:单线程 vs 回调 tp vs 未来 tp
- 破坏vulkan以测试调试回调是否正确设置的好方法是什么
- 如何为将回调作为其参数的函数编写单元测试
- 如何从 JNI 代码进行 JNIT 测试回调
- 使用GTest对回调进行单元测试
- 如何编写一个通用函数回调测试类
- c++中缺失回调函数的测试