我在为我的课程添加单元测试时遇到了问题。其中一个函数使用了一个boost指针(动态池),每当我从回溯中看到编译测试时,总会发生一个分段错误。如果正常运行,它会正确编译,但在使用Google Mock时会失败。
模拟:: AllowLeak似乎也不适合我。不幸的是,我无法在公共场合分享代码,所以如果有人经历过使用Google Mock增强指针的测试功能,请随时分享一些提示。
谢谢
要测试的功能:
RetObj* Foo::FooFunction(uint32_t param1)
{
spRetObj_t ptr = pool_storage->Get<RetObj>(); //error occurs when I use this
...
return ptr;
}
spRetObj_t初始化:
typedef stdex::IPool<RetObj>::iptr spRetObj_t;
池存储:
#include "stdex/dynamic_pool.hpp"
...
class PoolStorage
{
...
template<typename T>
typename stdex::IPool<T>::iptr Get(void (T::*on_free)(void) = 0);
...
}
引发异常的代码in boost:
T * operator->() const
{
BOOST_ASSERT( px != 0 );
return px;
}