我正在为原生 C++ 项目使用 Boost.Test 单元测试框架。一切正常,但升级到 Visual Studio 2010 后我遇到了一个问题:在测试作为构建后步骤运行后,错误列表中不再显示有关失败测试的消息。这是一个遗憾,因为 Boost.Test 与本机 C++ 项目的组合最接近(尽管仍然很远)我习惯于从单元测试托管项目中获得的舒适感。我在这里使用 Boost.Test 的作者推荐的配置。任何人都可以帮助解决这个轻微但有点安慰的问题吗?
问候,
保罗
我正在为原生 C++ 项目使用 Boost.Test 单元测试框架。一切正常,但升级到 Visual Studio 2010 后我遇到了一个问题:在测试作为构建后步骤运行后,错误列表中不再显示有关失败测试的消息。这是一个遗憾,因为 Boost.Test 与本机 C++ 项目的组合最接近(尽管仍然很远)我习惯于从单元测试托管项目中获得的舒适感。我在这里使用 Boost.Test 的作者推荐的配置。任何人都可以帮助解决这个轻微但有点安慰的问题吗?
问候,
保罗
如果您不想等待发布并想自己修复格式化程序
打开
BOOST_PATH\boost\test\impl\compiler_log_formatter.ipp
更改(boost_1_46_1 中的第 163 行)
output << "error in \"" << test_phase_identifier() << "\": ";
到
output << "error : in \"" << test_phase_identifier() << "\": ";
并再次用 bjam 重新编译 boost。
cd BOOST_PATH
bjam.exe
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 输出的内容(如果您在后期构建步骤中有 exe,则可以使用简单的 printf 来重现):
与 2005 年相比:
|./ut_TEMPLATE.cpp(8): error in "test_TEST": check true == false failed [1 != 0]
与 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 需要调整它的输出,以便 VS2010 IDE 仍然可以识别错误消息。