-1
Googleテストに何かをテストするASSERT_AND_RETURN
マクロがありますか?それが偽であれば、アサーションを発生させて値を返しますか?Google Testで「Assert and return」マクロを使用しますか?
Googleテストに何かをテストするASSERT_AND_RETURN
マクロがありますか?それが偽であれば、アサーションを発生させて値を返しますか?Google Testで「Assert and return」マクロを使用しますか?
実際には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]);
}
ASSERT_xxxは、テストに失敗し、そのトラックにそれを停止します。あなたはEXPECT_AND_RETURNを意味しましたか? –
gtestで期待していることが期待されるのはなぜですか? これは次のような意味です: bool Foo(){ ... ASSERT_AND_RETURN(x!= 0、false); int y = 1/x; ... } –