谷歌测试中的“断言并返回”宏?

Djo*_*vic 1 c++ testing assert googletest

ASSERT_AND_RETURNGoogle Test 中是否有任何宏可以测试某些内容,如果为假,则提出断言并返回一个值?

Pio*_*ycz 5

实际上,每个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]);
}
Run Code Online (Sandbox Code Playgroud)