在Google Test中,我希望能够做到这样的事情:
void ImNotNiceToPointers( void* p )
{
((int*)p) [5] = 1;
}
TEST( Bla, BlaBla )
{
EXPECT_NO_CRASH( ImNotNiceToPointers(NULL) );
}
我希望输出显示错误,该语句实际上使进程异常死亡。
Google Test中是否支持此功能?我很确定自己如何实现它,所以我几乎可以肯定它是可能的。
答案 0 :(得分:1)
您可以使用死亡测试来隔离崩溃:
EXPECT_EXIT(ImNotNiceToPointers(p); exit(0), ExitedWithCode(0), '');
但是,我建议不要使用死亡测试。使用死亡测试会产生启动子进程的开销,无论是否发生崩溃。但是,如果您只是按原样保留代码并且测试崩溃,您将会知道,并且能够修复它。借助Valgrind或Dr. Memory等工具,可以轻松追踪崩溃的起源。