4

私のコードのいくつかは、

if (failure)
  throw std::runtime_error("a bad thing happened: ...");

テストを自動的に実行するために Google Test と TeamCity を使用しています。これは Windows で実行されているため、 --gtest_catch_exceptions パラメータを使用して、予期しない例外が発生した場合にテストが失敗したことを報告します。ただし、Google Test は単に次のようなメッセージでテストに失敗します

Exception thrown with code 0xe06d7363 in the test body.
in (null) line -1

これはあまり役に立ちません。みたいなメッセージがあればいいのに

Exception thrown: "a bad thing happened: ..."

メソッドを実装するカスタム TestListener があります

OnTestPartResult( const ::testing::TestPartResult& test_part_result)

しかし、Google Test によってキャッチされた例外への参照はないようです。例外を std::cout または他の場所に報告する他の方法はありますか?

使えませんのでご了承ください

try
{
    return RUN_ALL_TESTS();
}
catch (std::exception& e)
{
    std::cout << "EXCEPTION: " << e.what();
    return -1;
}
catch (...)
{
    return -1;
}

--gtest_catch_exceptions を指定しないと、最初の例外でテストの実行が「キャンセル」されるためです。

また、スローコードを変更したくありません。

アイデアをありがとう!

4

1 に答える 1