简体   繁体   English

Google测试中的“声明并返回”宏吗?

[英]“Assert and return” macro in Google Test?

Google测试中是否有任何ASSERT_AND_RETURN宏来测试某项内容,如果为假,则引发一个断言并返回一个值?

Actually every ASSERT_XXX returns from function - but it does not return value - it is assumed that the function (in most cases functions created by TESTxx macros) are void function. 实际上,每个ASSERT_XXX从函数返回-但不返回值-假定该函数(大多数情况下是由TESTxx宏创建的函数)为void函数。

This is sometimes issue when you use ASSERT_XXX within function called from another function. 在从另一个函数调用的函数中使用ASSERT_XXX时,有时会出现此问题。 To check if function failed on assert - you need to use ASSERT_NO_FATAL_FAILURE . 要检查断言函数是否失败-您需要使用ASSERT_NO_FATAL_FAILURE

See example 看例子

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]);
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM