google test 变量初始化位置问题
gtest单元测试,出现Segmentation fault,gdb 单步跟踪发现错误出现在3位置, 进一步确定在4位置的vector.push_back段错误,在4之前打印device信息,没问题。
解决办法是将2位置这行的变量声明放到Test的构造函数中(譬如1位置),原因可能是2位置声明的全局变量并没有在Test函数mgmt声明的时候就声明,导致mgmt中无法调用
device的构造函数将此对象放入自己的vector里。
class CAckMgmtZoneTest : public ::testing::Test
{
protected:
virtual void SetUp() {
info_Init();
}
virtual void TearDown() {
info_Exit();
}
CAckMgmtZone mgmt;
2
};
CAckDevice device; 1
TEST_F(CAckMgmtZoneTest, getChild)
{
device.genOid();
device.setName("deviceTest") ;
mgmt.addDevice(device); 3
EXPECT_FALSE(NULL==mgmt.getChild(0));
}
LONG32 CAckMgmtZone::addDevice(CAckDevice &device)
{
do{
device.chkOid(__FUNCTION__);
for(vector<CAckDevice>::iterator it = __m_vecDevice.begin(); it != __m_vecDevice.end(); it++)
{
if(device.m_strOid == it->m_strOid)
return ACK_SUCCESS;
}
__m_vecDevice.push_back(device); 4
return ACK_SUCCESS;
}while(0)
}
浙公网安备 33010602011771号