5

CHECKfrom glogを使用するいくつかのコードをテストしていますが、このチェックが特定のシナリオで失敗することをテストしたいと思います。私のコードは次のようになります:

void MyClass::foo() {
  // stuff...
  // It's actually important that the binary gets aborted if this flag is false
  CHECK(some_flag) << "flag must be true";

  // more stuff...
}

私はいくつかの調査をgtest行い、これをテストする方法を調べました。EXPECT_FATAL_FALIUREEXPECT_NONFATAL_FAILURE、を見つけましたが、HAS_FATAL_FAILUREそれらの使い方がわかりませんでした。に変更すれば正しく機能すると確信していますが、テスト以外のファイルにテストの依存関係を導入しています...厄介CHECK(some_flag)です。EXPECT_TRUE(some_flag)EXPECT_FATAL_FAILURE

gtestアボートシグナル(または発生するものCHECK)をキャッチしてそれを期待する方法はありますか?

4

1 に答える 1

14

この質問を投稿してから 5 分後に回答が見つかりました。典型的。

これは、gtest のDeath テストを使用して実行できます。私のテストは次のようになります。

TEST(MyClassTest, foo_death_test) {
  MyClass clazz(false); // make some_flag false so the CHECK fails
  ASSERT_DEATH( { clazz.foo(); }, "must be true");
}

これはパスします。ウーフー!

于 2015-11-02T20:06:16.583 に答える