Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 如何使用Googletest测试导致无限循环的函数_C++_Windows_Eclipse Cdt_Googletest - Fatal编程技术网

C++ 如何使用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

有没有办法使用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 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可能重复的