2016-08-23 11 views
-1

Googleテストに何かをテストするASSERT_AND_RETURNマクロがありますか?それが偽であれば、アサーションを発生させて値を返しますか?Google Testで「Assert and return」マクロを使用しますか?

+2

ASSERT_xxxは、テストに失敗し、そのトラックにそれを停止します。あなたはEXPECT_AND_RETURNを意味しましたか? –

+0

gtestで期待していることが期待されるのはなぜですか? これは次のような意味です: bool Foo(){ ... ASSERT_AND_RETURN(x!= 0、false); int y = 1/x; ... } –

答えて

1

実際にはASSERT_XXXはすべて関数から返されますが、値を返しません。関数(ほとんどの場合、TESTxxマクロで作成された関数)はvoid関数です。

これは、別の関数から呼び出された関数内でASSERT_XXXを使用すると、問題が発生することがあります。関数がアサートに失敗したかどうかを確認するには - あなたはASSERT_NO_FATAL_FAILURE

を使用する必要がある例を参照してください

void assertNotNull(int *p) 
{ 
    ASSERT_THAT(p, NotNull(p)); 
} 
void assertSizeIs(int actual, int expected) 
{ 
    ASSERT_EQ(actual, expected); 
} 
TEST(A, B) 
{ 
    std::pair<int*,int> p = createArray(7); 

    ASSERT_NO_FATAL_FAILURE(assertNotNull(p.first)); 
    ASSERT_NO_FATAL_FAILURE(assertSizeIs(p.second, 7)); 

    for(int i = 0; i < 7; ++i) 
     ASSERT_EQ(0, p.first[i]); 
} 
関連する問題