Сообщения об ошибках Boost.Test больше не отображаются в списке ошибок VS2010 - PullRequest
7 голосов
/ 06 марта 2011

Я использую Boost.Test Unit Test Framework для собственных проектов C ++.Все работает нормально, но у меня есть одна проблема после обновления до Visual Studio 2010: сообщения о неудачных тестах больше не отображаются в списке ошибок после того, как тесты выполнялись как шаг после сборки.Это жаль, поскольку комбинация Boost.Test с собственным проектом C ++ приблизилась (хотя все еще далеко) к комфорту, к которому я привык из модульного тестирования управляемых проектов.Я использую конфигурацию, рекомендованную авторами Boost.Test здесь .Может ли кто-нибудь помочь с этой незначительной, но немного успокаивающей проблемой?

С уважением,

Пол

Ответы [ 2 ]

4 голосов
/ 09 мая 2011

Если вы не хотите ждать релиза и хотите исправить форматер самостоятельно

открыто

BOOST_PATH \ импульс \ тест \ осущ \ compiler_log_formatter.ipp

изменение (строка 163 в boost_1_46_1)

output << "error in \"" << test_phase_identifier() << "\": ";

до

output << "error : in \"" << test_phase_identifier() << "\": ";

и перекомпилируйте boost с bjam снова.

cd BOOST_PATH
bjam.exe
3 голосов
/ 08 марта 2011

Visual Studio 2005 Вывод сборки для ошибок компилятора выглядит следующим образом:

|.\ut_TEMPLATE.cpp(8) : error C2065: 'x' : undeclared identifier

Принимая во внимание, что ошибки компилятора Visual Studio 2010 выглядят так в окне вывода:

|1>ut_TEMPLATE.cpp(8): error C2065: 'x' : undeclared identifier

(Изменить: см. Комментарий gbjbaanb о >1.)

Теперь, проверяя, что выводит BOOST_ERROR (вы можете использовать простой printf для воспроизведения, если у вас есть exe на этапе посткомпиляции):

VS 2005:

|./ut_TEMPLATE.cpp(8): error in "test_TEST": check true == false failed [1 != 0]

VS 2010:

|1>  ut_TEMPLATE.cpp(10): error in "test_TEST": check true == false failed [true != false]

Небольшая разница, но не слишком большая и дальнейшее тестирование с ручным printf:

printf("ut_TEMPLATE.cpp(00): error : in \"test_TEST\": check true == false failed [true != false]" "\n");
                                  ^^^ .. Note colon here

Мы также заставляем VS 2010 распознать этот вывод как ошибку:

BOOST_AUTO_TEST_CASE(test_TEST)
{
    printf("ut_TEMPLATE.cpp(00): error : in \"test_TEST\": check true == false failed [true != false]" "\n");
    BOOST_CHECK_EQUAL( true, false);
}

1>------ Build started: Project: ut_TEMPLATE, Configuration: Release Win32 ------
1>  ut_TEMPLATE.cpp
1>  ut_TEMPLATE.vcxproj -> ....\UnitTests\ut_TEMPLATE\..\..\..\Release\ut_TEMPLATE.exe
1>  Running 1 test case...
1>ut_TEMPLATE.cpp : error : in "test_TEST": check true == false failed [true != false]
1>  ut_TEMPLATE.cpp(9): error in "test_TEST": check true == false failed [true != false]
1>C:\Programme\MSBuild\Microsoft.Cpp\v4.0\Microsoft.CppCommon.targets(113,5): error MSB3073: The command ""....\\ut_TEMPLATE.exe" --result_code=no --report_level=no
1>C:\Programme\MSBuild\Microsoft.Cpp\v4.0\Microsoft.CppCommon.targets(113,5): error MSB3073: :VCEnd" exited with code -1.
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========

Таким образом, может показаться, что вы / мы / Boost.Test должны настроить свой вывод, чтобы среда IDE VS2010 все еще распознала сообщение об ошибке.

...