2011-03-01 10 views

Respuesta

6

Mire GoogleTestAddin - Creo que es lo que quiere.
Citando a partir de la descripción CodePlex:

GoogleTestAddin es un complemento para Visual Studio 2008 y 2010.

Esto hace que sea más fácil de ejecutar funciones googletest/depuración mediante la selección de ellos.

Ya no tendrá que configurar los argumentos del comando de la aplicación de prueba para ejecutar solo las funciones o pruebas especificadas.

La salida de googletest se redirige a la ventana de salida de Visual Studio. En pruebas fallidas puede saltar fácilmente al código haciendo doble clic en el mensaje de error.

4

Se puede utilizar un evento posterior a la generación. He aquí una guía:
http://leefw.wordpress.com/2010/11/17/google-test-gtest-setup-with-microsoft-visual-studio-2008-c/

También puede configurar una "herramienta externa" en el menú Herramientas de Visual Studio, y lo utilizan para ejecutar la ruta de destino de su proyecto. (Sugerencia: cree un elemento de menú de la barra de herramientas para que sea más fácil invocarlo)

+0

Una nota sobre cómo ir a la ruta del evento posterior a la construcción: una prueba fallida hará que la construcción falle. Esto me causó problemas cuando seleccioné las pruebas en un servidor de integración continua (Jenkins) porque Jenkins informaría una compilación fallada en lugar de una prueba fallida. –

6

Hay una manera bastante simple de utilizar un paralelo la salida de googletest para las pruebas de su unidad.

En pocas palabras, puede crear su propia clase de impresora que emita resultados directamente en la ventana de salida de VisualStudio. De esta forma, parece más flexible que otras, ya que puede controlar tanto el contenido del resultado (formato, detalles, etc.) como el destino. Puede hacerlo bien en su función main(). Puede usar más de una impresora a la vez. Y puede saltar al código haciendo doble clic en el mensaje de error en las pruebas fallidas.

Estos son los pasos para hacerlo:

  1. crear una clase derivada de la clase ::testing::EmptyTestEventListener .
  2. Anular las funciones necesarias. Utilice la función OutputDebugString() en lugar de printf().
  3. Antes de RUN_ALL_TESTS() llamar, crea una instancia de la clase y vincúlala a la lista de oyentes de gtest.

Su clase de impresora puede ser similar al siguiente:

// Provides alternative output mode which produces minimal amount of 
// information about tests. 
class TersePrinter : public EmptyTestEventListener { 
    void outDebugStringA (const char *format, ...) 
    { 
     va_list args; 
     va_start(args, format); 
     int len = _vscprintf(format, args) + 1; 
     char *str = new char[len * sizeof(char)]; 
     vsprintf(str, format, args); 
     OutputDebugStringA(str); 
     delete [] str; 
    } 

    // Called after all test activities have ended. 
    virtual void OnTestProgramEnd(const UnitTest& unit_test) { 
    outDebugStringA("TEST %s\n", unit_test.Passed() ? "PASSED" : "FAILED"); 
    } 

    // Called before a test starts. 
    virtual void OnTestStart(const TestInfo& test_info) { 
    outDebugStringA(
      "*** Test %s.%s starting.\n", 
      test_info.test_case_name(), 
      test_info.name()); 
    } 

    // Called after a failed assertion or a SUCCEED() invocation. 
    virtual void OnTestPartResult(const TestPartResult& test_part_result) { 
    outDebugStringA(
      "%s in %s:%d\n%s\n", 
      test_part_result.failed() ? "*** Failure" : "Success", 
      test_part_result.file_name(), 
      test_part_result.line_number(), 
      test_part_result.summary()); 
    } 

    // Called after a test ends. 
    virtual void OnTestEnd(const TestInfo& test_info) { 
    outDebugStringA(
      "*** Test %s.%s ending.\n", 
      test_info.test_case_name(), 
      test_info.name()); 
    } 
}; // class TersePrinter 

La vinculación de la impresora a la lista de oyentes:

UnitTest& unit_test = *UnitTest::GetInstance(); 
TestEventListeners& listeners = unit_test.listeners(); 
listeners.Append(new TersePrinter); 

El enfoque se describe en el sample #9 de the Googletest samples.

4

Para Visual Studio 2012 también hay una extensión que proporciona un adaptador de prueba para Google prueba en Visual Studio (por lo tanto se integra con Visual Estudios Explorador de prueba): Google Test Adapter

1

Uso del adaptador de prueba Google rica en características proporcionan on GitHub y through the VS gallery (oa través de las extensiones menú de VS). Actualmente es compatible con VS2013 y VS2015, el soporte de VS2012 llegará pronto.

Descargo de responsabilidad: soy uno de los autores de esa extensión.

Cuestiones relacionadas