2016-09-26 10 views
0

私はテスト駆動開発効率向上に自分自身を取得しようとしています、と私はフレームワークGoogleのテストの質問があります:私はEXPECTに失敗しても、残りのテストコードが実行されますか?

TEST(SampleTest1, check_and_delete) { 
    MyClass* obj = func(data); 
    EXPECT_EQ(data2, obj->attr); 
    delete obj; 
} 

のようなテストは、私が解放最後の行は、使用予定がある場合は

を上記のEXPECTが失敗した場合でもメモリは実行されますか?

もしそうでない場合は、私が望む結果を得るためにどのマクロを使用すべきですか(つまり、2つのものが等しいかどうかをテストしますが、メモリクリアアップを実行します)。

答えて

0

Googleテストが最初の失敗の後にテストを続行するかどうかは確信できませんが、私はそれが正しいと思います。 は、単にテスト偽のテストで追加し、それが第二のテストは、あなたがテストが失敗した後続けることを知った後に評価されている場合

TEST(SampleTest1, check_and_delete) { 
    MyClass* obj = func(data); 
    EXPECT_EQ(data2, obj->attr); 
    int i = 5, j=5; 
    EXPECT_EQ(i, j); 
    delete obj; 
} 

を実行している場合参照してください。それは第二EXPECT_EQを評価していないなら、あなたはその後、EXPECT_EQ

TEST(SampleTest1, check_and_delete) { 
    MyClass* obj = func(data); 
    auto objAttr= obj->attr; 
    delete obj; 
    EXPECT_EQ(data2, objAttr); 
} 
+0

非常にあいまい前にポインタを削除し、スタック上のローカルコピーを作成する必要がありますが、私も考えていなかったので、私はこれを受け入れるだろう私は簡単に私の記憶に損害を与えないように簡単にテストすることができました。(単純な 'printf'を使って)スタックをコピーして前に削除することも私が考えなかったもう一つの有効な方法です。 – user6245072

関連する問題