使用谷歌测试测试崩溃

时间:2011-07-04 09:40:41

标签: unit-testing googletest

在Google Test中,我希望能够做到这样的事情:

void ImNotNiceToPointers( void* p )
{
  ((int*)p) [5] = 1;
}

TEST( Bla, BlaBla )
{
  EXPECT_NO_CRASH( ImNotNiceToPointers(NULL) );
}

我希望输出显示错误,该语句实际上使进程异常死亡。

Google Test中是否支持此功能?我很确定自己如何实现它,所以我几乎可以肯定它是可能的。

1 个答案:

答案 0 :(得分:1)

您可以使用死亡测试来隔离崩溃:

EXPECT_EXIT(ImNotNiceToPointers(p); exit(0), ExitedWithCode(0), '');

但是,我建议不要使用死亡测试。使用死亡测试会产生启动子进程的开销,无论是否发生崩溃。但是,如果您只是按原样保留代码并且测试崩溃,您将会知道,并且能够修复它。借助Valgrind或Dr. Memory等工具,可以轻松追踪崩溃的起源。