Baz*_*Baz 2 c++ std googletest shared-ptr googlemock
我正在使用大量接口来实现依赖注入(测试驱动开发).出于这个原因,我的很多对象都是通过std :: shared_ptr指向的.我本来会使用std :: unique_ptr但是他们在google mocking时根本没有复制构造函数.
我可以采取哪些措施来及早发现循环参考文件?
我正在使用谷歌测试在linux平台上工作.
使用共享指针自动检测循环引用是不可能的,我用来检测循环引用的一种技术是以下面的方式明确地执行它.保持全局可访问性std::vector< T* >,在所有ctors中将对象添加到向量中,然后在dtors中将其删除.然后在main的末尾你只是检查矢量是否为空,如果不是那么你可能在某处有一个循环引用,并且矢量将帮助你追踪到哪里.如果您拥有由静态分配的对象拥有的共享指针,则很容易遇到误报,尤其是在应用静态初始化顺序失败时.
在boost中,有一个定义,BOOST_SP_ENABLE_DEBUG_HOOKS通过它可以为所有类型执行此应用程序.
| 归档时间: |
|
| 查看次数: |
1976 次 |
| 最近记录: |