C++ 如何使用Googletest测试导致无限循环的函数
有没有办法使用googletest来测试一个会导致无限循环的函数?我有以下定义断言功能的代码:C++ 如何使用Googletest测试导致无限循环的函数,c++,windows,eclipse-cdt,googletest,C++,Windows,Eclipse Cdt,Googletest,有没有办法使用googletest来测试一个会导致无限循环的函数?我有以下定义断言功能的代码: #ifndef NDEBUG #define ukd_assert(expr) \ ((void)((expr) ? 0 : (Assert::failedAssert(), 0))) #else // NDEBUG #define INSTANTIATE_ASSERT(fp) #define ukd_assert(expr) ((void)0) #endif volatile
#ifndef NDEBUG
#define ukd_assert(expr) \
((void)((expr) ? 0 : (Assert::failedAssert(), 0)))
#else // NDEBUG
#define INSTANTIATE_ASSERT(fp)
#define ukd_assert(expr) ((void)0)
#endif
volatile bool loopFlag = true;
void failedAssert( void )
{
const char *str = "Assert failed\r\n";
// now hang
while(loopFlag)
{}
}
我需要googletest来运行一个测试,以检查failedAssert函数是否从断言定义中调用。如果有必要,我使用的是windows 10计算机。在单独的线程中启动该函数并有一个超时?您能提供一个如何设置的示例吗?一般来说,我对谷歌的测试和编码是相当陌生的。因此,在
C++14
中,一个有无限循环的程序定义不正确。这意味着这一机制今后可能无法发挥作用。无限循环的使用可能会导致运行中的CPU出现问题,因为CPU必须保持工作状态,并且限制了操作系统处理计算机上其他事情的机会。(考虑睡眠或退出()。您不应该使用volatile在线程之间进行通信。使用std::atomics可能重复的