2011-03-06 7 views
7

Estoy usando Boost.Test Unit Test Framework para proyectos nativos de C++. Todo está funcionando bien, pero tengo un problema después de actualizar a Visual Studio 2010: los mensajes sobre pruebas fallidas ya no se muestran en la lista de errores después de que las pruebas se ejecutaron como un paso posterior a la compilación. Es una lástima, ya que la combinación de Boost.Test con el proyecto nativo de C++ fue la más cercana (aunque todavía distante) de la comodidad a la que estoy acostumbrado desde los proyectos administrados de pruebas unitarias. Estoy usando la configuración recomendada por los autores de Boost.Test here. ¿Alguien puede ayudar con este problema menor pero un poco de alivio de la comodidad?Los mensajes de error Boost.Test ya no se muestran en la lista de errores de VS2010

Saludos,

Paul

+0

Tiene el formato del mensaje de error del compilador cambiado por cierto. VS2010 y versiones anteriores, para que el IDE no pueda analizar los mensajes de Boost.Test? ¿Qué ves en la ventana de salida? –

+0

Para aclarar el problema un poco: los mensajes sobre pruebas fallidas se muestran en el panel de salida de VS correctamente. Es la entrada en el * panel de la lista de errores * lo que falta ... –

Respuesta

3

Visual Studio 2005 resultados de generación de errores del compilador se ve así:

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

Mientras que Visual Studio 2010 errores de compilación el siguiente aspecto en la ventana de salida:

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

(Editar: Ver el comentario por.sobre la >1)

Ahora, la verificación cruzada qué productos BOOST_ERROR (se puede utilizar un printf sencilla de reproducir si usted tiene su exe en el paso posterior a la construcción):

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] 

pequeñas diferencias, pero no demasiado y más pruebas con un manual de printf:

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

También recibimos VS 2010 para reconocer esta salida como un error:

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 ========== 

por lo que parece que/nos/Boost.Test necesita ajustar su salida de manera que el IDE VS2010 todavía reconoce el mensaje de error

+0

el 1> representa a qué construcción se refiere la línea, por lo que cuando construyas en una PC de cuatro núcleos y tengas varios proyectos en la solución, construye 4 de ellos simultáneamente, y preséntalos con 2> 3> etc. – gbjbaanb

+0

Gracias a todos ... Admito que esta vez decidí preguntarle a la comunidad antes de hacer mucha investigación por mi cuenta. En la oficina sigo usando VS2008 (con boost 1.43 personalizado y construido manualmente) donde los mensajes de error de Boost.Test se reconocen correctamente. En casa, tengo VS2010 + boost 1.44 instalado desde binarios proporcionados por boost consulting. Además, VS2010 parece proporcionar un control mucho más preciso sobre el proceso de compilación directamente desde el IDE, por lo que antes de comenzar a modificar Boost.Test necesito verificar las otras posibilidades. Informará sobre el éxito ... –

+1

Por favor presente un boleto Boost.Test –

4

Si no quiere esperar para una liberación y quieren fijar el formateador por sí mismo

abierta

BOOST_PATH \ impulso \ test \ impl \ compiler_log_formatter.ipp

cambio (línea 163 en boost_1_46_1)

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

a

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

y recompile boost con bjam nuevamente.

cd BOOST_PATH 
bjam.exe 
+0

Muchas gracias. Debería haber publicado eso yo mismo (ya hice la corrección) ... –

Cuestiones relacionadas