0

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

4

5 に答える 5