如何使用gmock嘲笑OpenCV摄像机,或者如何将摄像机与GTEST一起使用
How to mock OpenCV camera using GMock, or how test method that use camera with GTest?
我为OpenCV库编写了包装器。我创建Camera
类,允许使用硬件相机。
测试方法是这样的:
bool Camera::Open(int idx) {
cam_ = cv::VideoCapture(idx)
if (cam_.isOpened())
return true;
return false;
}
我想使用GTEST测试Open()
方法,但我不想用真实的物理相机测试它。我认为最好的方法是使用Gmock,但我真的不知道如何模拟相机。
一个选项是为相机和出厂功能创建接口:
class ICam {
virtual bool isOpened() const = 0;
};
class ICamFactory {
virtual std::unique_ptr<ICam> VideoCapture(int idx) = 0;
};
您是相机类,然后使用摄像头构建,该摄像头会实现ICAMFACTORY。在您的测试中,您可以创建一个返回小型摄影机的无用摄影。然后,您可以在"无用的摄影"answers" Mockcam"上设置期望:
EXPECT_CALL(mockCamFactory, VideoCapture(idx))
.WillOnce(ReturnNew<MockCam>());
EXPECT_CALL(mockCam, isOpened())
.WillOnce(Return(true));
ASSERT_TRUE(camera.IsOpen(idx));
您的真实凸轮类,然后将呼叫拨打到OpenCV。
相关文章:
- 在gtest.中使用fff.h模拟系统API
- 如何解决GTest和LibTorch联动冲突
- 如何将GTest与CMake一起使用?遵循谷歌指南时的链接问题
- 将摄像机调整到俯视图
- 在 gtest 中初始化堆栈上的引用变量的隔离错误
- OSG地球摄像机位置
- GTest,仅参数化测试用例
- 使用 gtest 时"_main already defined"
- 无法使用 OpenCv 3.4.5 从具有C++ dll 的网络摄像机 (rtsp) 中抓取帧
- GTEST : 如何将数组列表作为参数传递到 ValuesIn of INSTANTIATE_TEST_CASE_P?
- 无法将 GTest 中的类与 CMake 链接
- 使用 gtest 框架在单元测试代码中检查目标对象的私有变量的最佳实践是什么?
- 如何使用成员 c++ 使用 gtest 测试基于私有类的行为
- C++ 具有GTest TYPED_TEST的多个参数
- gtest 期望无序元素与自定义比较器/匹配器一起使用
- GTest EXPECT_EQ给出未定义的错误参考
- 如何运行 gtest?
- 确保模拟的 GTest 方法覆盖虚拟方法
- 在 Windows 10 下使用 GTest 的 CMake - 致命错误 LNK1104:无法打开文件"gtest.lib",但存在调试"gtestd.lib"
- 如何使用gmock嘲笑OpenCV摄像机,或者如何将摄像机与GTEST一起使用