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 все еще распознала сообщение об ошибке.