3

Google Testでは、次のようなことができるようにしたいと思います。

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

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

そして、ステートメントが実際にプロセスを異常に終了させたというエラーを出力に表示したいと思います。

Google Testでこれをサポートしていますか?自分でどのように実装するかはかなり確信しているので、ほぼ確実に可能です。

4

1 に答える 1

2

Death テストを使用して、クラッシュを分離できます。

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

ただし、死のテストを使用しないことをお勧めします。Death テストを使用すると、クラッシュがあるかどうかに関係なく、サブプロセスを起動するオーバーヘッドが発生します。しかし、コードをそのままにしておくだけでテストがクラッシュした場合は、それがわかり、修正することができます。Valgrind や Dr. Memory などのツールを使用すると、クラッシュの原因を簡単に追跡できます。

于 2011-07-06T06:26:23.717 に答える