Как я могу поймать свое пользовательское исключение с Boost.Test? - PullRequest
3 голосов
/ 15 июля 2010

Когда я тестирую свой класс C ++ с Boost.Test, и мои пользовательские исключения генерируются (они являются экземплярами моего класса), это сообщение, которое я вижу в журнале:

unknown location:0: fatal error in "testMethod": unknown type

Это оченьнеинформативен, и я не знаю, как научить Boost.Test преобразовывать мое исключение в строку и отображать его правильно.Мой класс Exception имеет operator string(), но это не помогает.Есть идеи?Спасибо!

Ответы [ 4 ]

2 голосов
/ 15 июля 2010

Я полагаю, что это сработает, если ваш класс исключений наследуется от std::exception.

1 голос
/ 15 июля 2010

Вы можете проверить, выдает ли функция указанное значение, кроме как с помощью BOOST_CHECK_THROW или аналогичного

см. Boost.Test Docs :

class my_exception{};

BOOST_AUTO_TEST_CASE( test )
{
   int i =  0;
   BOOST_CHECK_THROW( i++, my_exception );
}
1 голос
/ 15 июля 2010

Вам может потребоваться определить оператор << в пространстве имен std: </p>

namespace std {
    inline std::ostream& operator<<(std::ostream& os, const Exception& ex) {
        os << ex.string();
        return os;
    }
}

Это должно позволить boost.test отображать содержимое вашего исключения.

Я нашелэто необходимо для проверки объектов с помощью BOOST_CHECK_EQUAL () и т. д.

0 голосов
/ 15 июля 2010

Я просто унаследовал его от std::string и все работает нормально.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...