Boost.Test отладка приложения - PullRequest
       14

Boost.Test отладка приложения

6 голосов
/ 15 августа 2010

При отладке приложения C ++ Boost.Test внутри VS2010 (VS2008), как сделать остановку отладчика в точках сбоя утверждения Boost.Test?

Ответы [ 3 ]

2 голосов
/ 15 августа 2010

Я не пробовал это сам, но теоретически вы бы хотели установить точку останова где-нибудь в check_impl функции (в источнике boost_unit_test_library), вероятно, в случаях без PASS ее финалазаявление о ситуации

На практике я всегда просто снова запускаю тесты (или тест для конкретной проблемы, выбранный с помощью --run_test = ...) с точкой останова на проверочной проверке.

Примечаниечто сбой BOOST_REQUIRE приводит к выбрасыванию, поэтому, если вы включите VS 'break-on-C ++ - исключения в опциях отладки, которые будут разбиваться на тех, кто приятно (но не BOOST_CHECK s, которые просто возвращаются и продолжают).

1 голос
/ 12 мая 2015

Я поставил точки останова в check_impl(), как подсказывает @ timday.

Вот выдержка из Boost 1.57.0, файл boost/test/impl/test_tool.ipp, строки от 355 до 373:

switch( tl ) {
case PASS:
    framework::assertion_result( true );
    return true;

case WARN:
    return false; // ADD BREAKPOINT HERE

case CHECK:
    framework::assertion_result( false );
    return false; // ADD BREAKPOINT HERE

case REQUIRE:
    framework::assertion_result( false );

    framework::test_unit_aborted( framework::current_test_case() );

    throw execution_aborted(); // ADD BREAKPOINT HERE
}
0 голосов
/ 11 ноября 2017

assertion.hpp

шаблон класса binary_expr:

assertion_result            evaluate( bool no_message = false ) const
    {
        assertion_result const expr_res( value() );
        if( no_message || expr_res )
            return expr_res;   <<<<<<<<  SUCCESS

BRK        wrap_stringstream buff;
        report( buff.stream() );

        return tt_detail::format_assertion_result( buff.stream().str(), expr_res.message() );
    }
...