如何在Mac Mojave中处理相机权限以进行测试?

时间:2019-06-29 03:16:23

标签: c++ macos camera macos-mojave

我有几个传统的单元测试,它们通过处理相机本身的外部模块以C ++访问相机。如果使用Mac mojave,则会打开相机许可请求,并且由于超时,单元测试将失败。如何自动允许摄像机访问或完全停用这些权限请求?

请注意,我无法更改实际访问摄像机的测试代码。它是第三方模块。

编辑:我应该把它称为集成测试而不是单元测试

1 个答案:

答案 0 :(得分:2)

在您的情况下,单元测试不应有任何I / O调用,如文件I / O,网络I / O或任何设备I / O(如照相机)。单元测试意味着速度很快,应该能够在几秒钟内运行成千上万的测试用例。

解决方案是重构对使用接口访问摄像头的第三方模块的调用,以便您可以通过模拟实现来进行依赖注入,并控制调用顺序和返回值。

您可以创建自己的模拟实现,也可以使用google mock之类的框架,通过它们可以轻松获得模拟功能时所需的大量功能。


在“系统偏好设置”→“安全性和隐私”→“隐私”下授予摄像机访问“终端”的权限,并始终从终端启动测试应用。