VS2010的错误列表中不再显示Boost.Test错误消息

Pau*_*lik 7 c++ boost unit-testing visual-studio-2010 boost-test

我正在为本机C++项目使用Boost.Test Unit Test Framework.一切正常,但升级到Visual Studio 2010后我遇到了一个问题:在测试作为后期构建步骤运行后,错误列表中不再显示有关失败测试的消息.这是一个遗憾,因为Boost.Test与原生C++项目的结合最接近(尽管仍然很远),以至于我习惯于从单元测试管理项目中获得的舒适度.我使用的如Boost.Test的作者建议的配置在这里.任何人都可以帮助这个轻微但有点舒适减轻问题?

问候,

保罗

Mar*_* Ba 3

Visual Studio 2005 编译器错误的生成输出如下所示:

|.\ut_TEMPLATE.cpp(8) : error C2065: 'x' : undeclared identifier
Run Code Online (Sandbox Code Playgroud)

而 Visual Studio 2010 编译器错误在输出窗口中如下所示:

|1>ut_TEMPLATE.cpp(8): error C2065: 'x' : undeclared identifier
Run Code Online (Sandbox Code Playgroud)

(编辑:请参阅gbjbaanb关于 的评论>1。)

现在,交叉检查 BOOST_ERROR 输出的内容(如果您在构建后步骤中有 exe,则可以使用简单的 printf 来重现):

对比 2005 年:

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

对比 2010 年:

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

略有差异,但差异不大,并使用手动 printf 进一步测试:

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

我们还让 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 ==========
Run Code Online (Sandbox Code Playgroud)

因此,看来您/我们/Boost.Test 需要调整其输出,以便 VS2010 IDE 仍然可以识别错误消息。

  • @GennadiyRozental´:这个非常烦人的问题在 1.52 中仍然存在。并不是说它很难修复,它只是需要修补和重新编译 boost 库,这是我想避免的。是否有具体原因导致它没有在官方发行版中修复? (2认同)