私のコードの一部は、私は自動的に私のテストを実行するには、Googleのテストとチームシティーを使用していますプリントexception.what()
if (failure)
throw std::runtime_error("a bad thing happened: ...");
を使用してスローします。 Windows上で動作しているので、予期しない例外が発生した場合、テストを失敗として報告するために--gtest_catch_exceptionsパラメータを使用します。しかし、Google Testは単に
Exception thrown with code 0xe06d7363 in the test body.
in (null) line -1
などのメッセージでテストに失敗しますが、これはあまり役に立ちません。私はむしろ、私は法に
OnTestPartResult(const ::testing::TestPartResult& test_part_result)
を実装するカスタムTestListenerを持って
Exception thrown: "a bad thing happened: ..."
のようなメッセージを持っていると思いますが、Googleのテストでキャッチされた例外への参照がないように思えます。例外をstd :: coutまたは他の場所に報告する他の方法はありますか?
テストの実行は、最初の例外に「キャンセル」を取得しますので、私は、--gtest_catch_exceptionsなし
try
{
return RUN_ALL_TESTS();
}
catch (std::exception& e)
{
std::cout << "EXCEPTION: " << e.what();
return -1;
}
catch (...)
{
return -1;
}
を使用することはできませんのでご注意ください。
また、スローコードを変更したくない場合もあります。
ありがとうございました!
使用しているgoogletestのバージョンは何ですか?あなたが望むように自動的に文字列を出力するようにトランクがサポートされているようです。 –