我想测试一个函数:
#include <cassert>
int my_func(int myParam) {
int ret = 0
if (myParam >= 10) {
assert(false);
// Logger call like `qCritical << "myParam is too big. Returning 0";`
} else {
ret = myParam * 2;
}
return ret;
}
assert()
仅在调试版本中启用。
我想编写一些测试,通过测试是否使用调试配置构建(我认为这是正确的方法?或者只针对特定的构建配置编写测试是否合理?)。因此,测试输入例如为999:
assert()
)。0
。我知道EXPECT_DEBUG_DEATH
,如果使用调试配置构建,则只会发生崩溃。但是,只有在没有调试配置的情况下构建时,我才会看到一个测试宏以期望特定的返回值。
答案 0 :(得分:2)
与上面提到的其他人一样,如何使用NDEBUG
预处理器指令? NDEBUG
禁用标准C断言。
你可以这样做
#ifdef NDEBUG
TEST_F(FooTest, DISABLED_MyFuncAbortsOnInputBigger10)
#else
TEST_F(FooTest, MyFuncAbortsOnInputBigger10)
#endif
{
// ...
EXPECT_DEATH( /* .. */ );
}
#ifdef NDEBUG
TEST_F(FooTest, MyFuncLogsInvalidInput)
#else
TEST_F(FooTest, DISABLED_MyFuncLogsInvalidInput)
#endif
{
// ...
}
这样,在发布模式下编译和运行测试套件时,将禁用您的死亡测试。在调试模式下,死亡测试处于活动状态。
测试名称中的DISABLED_
前缀允许您禁用测试但继续编译测试代码。您可以在AdvancedGuide。