c++ - Google 测试中的 "Assert and return"宏?

标签 c++ testing assert googletest

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

最佳答案

实际上每个 ASSERT_XXX 从函数返回 - 但它不返回值 - 假定函数(在大多数情况下由 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]);
}

关于c++ - Google 测试中的 "Assert and return"宏?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39111724/

相关文章:

c++ - 无论如何,模板不是用作参数,而是用作全局类型吗?

testing - 当指定要测试具有多个项目的解决方案时,dotnet test 命令记录器仅写入上次测试的输出

angular - 测试期间 ng-reflect 与 nativeElement 上的 'real' 属性值

c - assert == 中的函数调用不好吗?

c# - 此测试中的多个断言是否错误?

java - Java 中的断言包装器

c++ - 在字符串类型崩溃的动态数组中实现删除

c++ - 如何从 UTF-8 编码的 char* 中获取可见字符数?

c++ - CURLpp:TLS 握手错误

python - 机器人框架和 Django