繁体   English   中英

是否可以通过某些宏禁用Google测试断言?

[英]Is it possible to disable google test assertions with some macro?

考虑我有一个带有循环的热函数,并且其中有gtest断言:

for (i = 0; i < BIG_NUMBER; i++)
{
    EXPECT_TRUE(a[i] > 0.) << "a[i] = " << a[i];
    c[i] = a[i] + b[i];
}

我想要该程序具有2种不同的构建类型:

  1. 启用所有断言(调试类型)
  2. 禁用所有断言(发布类型)

可能吗?

也许可以重新定义宏EXPECT_TRUE

首先,我无法想象要在本地以外的地方这样做,以使测试运行得更快一些,从而可以解决一些更特殊的情况。 EXPECT_TRUE等。 仅在Google测试环境中有用,并且仅应出现在单元测试中,而不应出现在代码主体中。

在本地,我将使用一个单独的宏(这样,读代码的人会立即知道这是一个条件测试),比如说COND_EXPECT_TRUE (对于条件EXPECT_TRUE),它定义如下:

#ifdef ALL_TESTS
#define COND_EXPECT_TRUE EXPECT_TRUE
#else
#define COND_EXPECT_TRUE dummyOutput
#endif

,其中dummyOutput是未打开的std::ofstream某处。 (或者,如果您确实希望确定,可以定义一个nullstream类,该类将输出到稀疏目录中。但是在这种情况下,输出中的转换仍然会发生;在未打开的std::ofstream ,事实是处于错误状态会禁止转换。)

暂无
暂无

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

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