我正在为本机C项目使用Boost.Test Unit Test Framework.一切正常,但升级到Visual Studio 2010后我遇到了一个问题:在测试作为后期构建步骤运行后,错误列表中不再显示有关失败测试的消息.这是一个遗憾,因为Boost.Test与原生C项目的结合最接近(尽管仍然远远不够),以至于我习惯于单元测试管理项目.我正在使用Boost.Test
here的作者推荐的配置.任何人都可以帮助这个小调但有点舒适减轻问题吗?
问候,
保罗
解决方法
用于编译器错误的Visual Studio 2005 Build输出如下所示:
|.\ut_TEMPLATE.cpp(8) : error C2065: 'x' : undeclared identifier
而Visual Studio 2010编译器错误在输出窗口中如下所示:
|1>ut_TEMPLATE.cpp(8): error C2065: 'x' : undeclared identifier
现在,交叉检查BOOST_ERROR输出的内容(如果你在后期构建步骤中有你的exe,你可以使用一个简单的printf来重现):
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
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 ==========