3

在谷歌测试中,我希望能够做这样的事情:

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

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

而且我希望输出显示该语句实际上使进程异常终止的错误。

谷歌测试对此有任何支持吗?我很确定我将如何自己实现它,所以我几乎可以肯定它是可能的。

4

1 回答 1

2

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

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

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

于 2011-07-06T06:26:23.717 回答