некоторые из моих кодовых бросков, используя
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, поскольку выполнение теста затем «отменяется» при первом исключении.
Я также не хотел бы менять код метания.
Спасибо за любые идеи!