gtestを使ってアサーションをテストします。 方法は次のようになります。Googletest - DeathTestはQ_ASSERTなどのQtアプリケーションからのアサーションをキャッチしません。
void aMethod()
{
Q_ASSERT(1 == geode.getNumDrawables());
DoSomeOtherStuff
}
とテストは、次のようになります
TEST_F(aTestClassDeathTest, aTestName)
{
::testing::FLAGS_gtest_death test_style = "threadsafe";
ASSERT_DEATH({ aMethod;}, "1 == geode.getNumDrawables");
}
このテストでは、Linuxでgccで正常に動作します。
しかし、Visual Studio 2010のWindowsではこのテストに問題があります。
私がテストを実行すると、エラーウィンドウが開きます。アサーションの失敗を示します。ウィンドウを閉じると、すべてのテストが終了します。テストの失敗はありません。
私はgtestsがアサーションの失敗を引き起こし、プロセスの出力を評価する新しいプロセスを開始すると思います。これは動作し、テストパスします。
しかし、新しいプロセスが失敗したことをVisual Studioに通知すると、エラーウィンドウが作成されます。
どのようにエラーウィンドウを抑制できますか?