"Assert and return" Google 测试中的宏?
"Assert and return" macro in Google Test?
在 Google 测试中是否有任何 ASSERT_AND_RETURN
宏测试某些东西,如果它是假的,提出一个断言和 returns 一个值?
实际上每个 ASSERT_XXX
returns 来自函数 - 但它没有 return 值 - 假定函数(在大多数情况下由 TESTxx
创建的函数宏)是无效函数。
当您在从另一个函数调用的函数中使用 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]);
}
在 Google 测试中是否有任何 ASSERT_AND_RETURN
宏测试某些东西,如果它是假的,提出一个断言和 returns 一个值?
实际上每个 ASSERT_XXX
returns 来自函数 - 但它没有 return 值 - 假定函数(在大多数情况下由 TESTxx
创建的函数宏)是无效函数。
当您在从另一个函数调用的函数中使用 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]);
}