我正在使用谷歌 C++ 测试工具进行单元测试。我是一名新手 C 程序员和测试员。以下是我的代码片段:
TEST_F (def_fix, SR_M_T) {
I_M_S * arg;
RM__S_F_R_T* message_data;
char mT[MAX_M_T_LENGTH] = "data";
strcpy(message_data->mT,mT);
message_data->rUID[0] = '\0';
message_data->uT[0] = '\0';
unsigned char buffer[sizeof(RM__S_F_R_T)+2];
memcpy(&buffer[2],message_data,sizeof(RM__S_F_R_T));
buffer[0] = 1; //This assignment is not important for this test
buffer[1] = 2; //This assignment is not important for this test
arg->payload_data = buffer;
handleSR(arg);
}
以上所做的是创建传入消息。这个传入的消息arg
将用作调用函数的参数,它handleSR (void *).
def_fix
是一个默认的夹具类,其中包含SetUp()
并且TearDown()
没有任何花哨的东西。
RM__S_F_R_T
是一个包含 3 个字符串的结构。
I_M_S
是一个包含指向 的指针的结构RM__S_F_R_T
。
当我用谷歌测试这个时,它给出了一个分段错误。但是,当我更改:
RM__S_FR_R_ * message_data;
使用 运算符RM__S_FR_R_ message_data;
而.
不是->
运算符时,事情往往会奏效。谁能解释一下?