Google 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;
を使用すると、うまくいく傾向があります。誰でも説明できますか?.
->