2010-10-17 25 views
30

He descargado la prueba de Google, pero ahora no tengo idea de cómo vincularla a mi proyecto en eclipse. ¿Debo agregarlo como una carpeta de origen? ¿Debería incluirlo como una biblioteca incluida de g ++? ¿Y cómo puedo ejecutar la prueba entonces?usando googletest en eclipse: ¿cómo?

+0

Originalmente, Google recomienda vincular con una biblioteca, pero más tarde cambió su recomendación después de que tuvieran un montón de malas experiencias. La biblioteca está construida usando ciertas opciones de compilación. Si el caso de prueba y el software no están construidos con opciones idénticas, entonces las cosas pueden salir mal, ya sea desastrosamente o sutilmente. Por lo tanto, ahora recomiendan incluir el código fuente Gtest en cada caso de prueba y compilarlo todo como uno, no con Gtest como una biblioteca vinculada. Ver https://code.google.com/p/googletest/wiki/FAQ#Why_is_it_not_recommended_to_install_a_pre-compiled_copy_of_Goog – Mawg

Respuesta

38

Usando Riga's excellent answer, aquí es un resumen de cómo llegué a trabajar:

  1. creado un nuevo proyecto de C++ en Eclipse (elegí Ejecutable> Proyecto vacío)
  2. Descargado googletest 1.5.0, descomprimido, y corrieron ./scripts/fuse_gtest_files.py . <project-dir>/contrib
  3. vuelta en Eclipse, excluido el directorio contrib de la configuración de lanzamiento de construcción, y ha añadido <project-dir>/contrib a los directorios incluyen (impares, lo sé)
  4. añadido un src directorio y añade una clase llamada Foo (véase más abajo de los contenidos de Foo.h --que izquierda Foo.cpp vacío por ahora)
  5. añadido un directorio test en Eclipse, excluido de la configuración de generación de lanzamiento, agregó <project-dir>/contrib a los directorios incluyen, y agregó nuevos archivos de origen FooTest.cpp y AllTests.cpp (ver a continuación el contenido)
  6. ¡Creó y ejecutó el proyecto!

foo.h:

#ifndef FOO_H_ 
#define FOO_H_ 
class Foo { 
public: 
    virtual ~Foo(); 
    Foo(); 
    bool foo(void) { return true; } 
}; 
#endif /* FOO_H_ */ 

FooTest.cpp:

#include "gtest/gtest.h" 
#include "Foo.h" 
namespace { 
    class FooTest : public ::testing::Test { 
    protected: 
    Foo foo; 
    }; 
    TEST_F(FooTest, Foo) { 
    ASSERT_TRUE(foo.foo()); 
    } 
} 

AllTests.cpp:

#include "gtest/gtest.h" 
#include "FooTest.cpp" 
int main(int argc, char **argv) { 
    ::testing::InitGoogleTest(&argc, argv); 
    return RUN_ALL_TESTS(); 
} 

Éstos son los pasos detallados:

  1. En Eclipse, abra el menú Archivo y seleccione Proyecto Nueva>C++
  2. Tipo de Proyecto: Ejecutable>Proyecto vacío
  3. Toolchain: Linux GCC
  4. Haga clic Terminar
  5. Abrir una terminal y cd /tmp
  6. wget http://googletest.googlecode.com/files/gtest-1.5.0.tar.bz2
  7. cd gtest-1.5.0/
  8. ./scripts/fuse_gtest_files.py . <project-dir>/contrib
  9. vuelta en Eclipse, haga clic en la carpeta del proyecto en el panel Explorador de proyectos, a continuación, seleccione Actualizar
  10. En el panel Explorador de proyectos, haga clic en la carpeta contrib, seleccione Excluir de compilación ...*, Untick sólo el ** Suelte cuadro y haga clic en OK
  11. Haga clic derecho en la carpeta contrib y seleccione Propiedades>C/C++ Build>Ajustes>configuración de la herramienta pestaña>GCC compilador de C++>Directorios
  12. Haga clic en la Añadir ... botón, entonces el espacio de trabajo ... botón, y luego se Lect <project-name>/contrib y haga clic en OK añadir el directorio
  13. Haga clic OK una vez más para aceptar los cambios en los valores de creación
  14. Haga clic derecho en el proyecto en el panel Explorador de proyectos y seleccione Nueva>carpeta, introduzca src como su nombre, y haga clic en OK
  15. Haga clic derecho en la carpeta src en el panel Explorador de proyectos y seleccione Nueva >Clase, nombre que Foo, a continuación, haga clic en OK (ver arriba contenido de Foo.h; Foo.cpp se puede dejar tal cual)
  16. Haga clic derecho en el proyecto en el panel Explorador de proyectos y seleccione Nueva>carpeta, introduzca test como su nombre, y haga clic en OK
  17. Siga los pasos anteriores para añadir <project-name>/contrib y <project-name>/src como incluir los directorios al directorio test
  18. Haga clic derecho en la carpeta test, a continuación, seleccione Nueva >archivo de origen añadir AllTests.cpp a la carpeta test, a continuación, repita los mismos pasos para agregar FooTest.cpp (ver arriba contenidos)
  19. Haga clic derecho en FooTest.cpp y seleccione Excluir de la construcción ..., haga clic en el botón Seleccionar todo , a continuación, OK
  20. Haga clic derecho en el proyecto en el panel Explorador de proyectos y seleccione Propiedades >C/C++ Build> Ajustes >configuración de la herramienta pestaña>GCC C++ Linker>Bibliotecas, a continuación, haga clic en el Añadir ... botón, introduzca pthread (requerido por googletest), haga clic en OK añadir la biblioteca, entonces OK una vez más para aceptar los cambios
  21. Hit Ctrl-b para construir el proyecto
  22. Hit Ctrl-F11 para ejecutar el proyecto
  23. ¡Victoria!
+1

Tengo otro archivo en mi carpeta principal de src (no test/src) que tiene una función principal y el proyecto no se compila porque AllTests también contiene una función principal. ¿Estoy haciendo algo mal aquí? – Aly

+0

No puedo ver el "Excluir de compilación" en el paso .10. ¿Me puedes ayudar? – eeadev

+0

Estoy respondiendo a mí mismo: para mi eclipse de kepler, debe seguir esto: haga clic derecho-> propiedades-> c/C++ build-> configuración-> excluir ... – eeadev

9

No debe agregarlo a su carpeta de origen, haga una carpeta diferente. Esto es para evitar la dependencia de su código de producción del proyecto de prueba. Hágalo así

../ #your project folder 
Makefile 
src/ 
    module1 #some module 
    module2 #another module 
build #tmp for build 
dist #binaries 
contrib/ 
    gtest 
    ... 
test/ #your test project folder 
    Makefile 
    src/ 
    module1 #correspondent to main project's one 
    module2 #correspondent to main project's one 
    build 
    dist 
    ... 

Normalmente uso google test como dos archivos, esto es muy útil. Use scripts/fuse_gtest_files.py de la distribución gtest para extraerlos. Al tener solo dos archivos, puede incluir su compilación en la compilación de su proyecto de prueba y tener una estructura de proyecto simple.

En su prueba, los proyectos incluyen directorios ../contrib:../src:src. De este modo se pueden incluir los encabezados como este

prueba/src/módulo 1/class1Test.h:

#include "gtest/gtest.h" 
#include "module1/class1.h" 

// test class1 here 
// ... 

prueba/src/mainTest.cpp:

#include "gtest/gtest.h" 
#include "module1/class1Test.h" 
#include "module2/class2Test.h" 
// include other tests you have 
// ... 

int main(int argc, char** argv) { 
    ::testing::InitGoogleTest(&argc, argv); 
    return RUN_ALL_TESTS(); 
} 
6

Aquí está mi solución para Eclipse 4.3 y CDT 8.2 Sentí que esto era algo más fácil que el descrito anteriormente.

  1. Descargar GTEST e instalarlo como se describe en el readme.txt (usando cmake y hacer en linux)

  2. Ir a "YourProject-> Propiedades-> C/C++ Generar-> Configuración> GCC C++ Compiler-> Incluye-> Incluir caminos" y añadir la carpeta incluyen en GTEST

  3. Ir a "YourProject-> Propiedades-> C/C++ Generar-> Configuración> GCC C++ Linker-> Bibliotecas", añadir la carpeta gtest como ruta de búsqueda y agregar las bibliotecas "gtest" y "pthread"

(4. Si tiene pruebas en el mismo proyecto como fuentes excluyen las pruebas de liberación de construcción)

  1. vaya a "Run-> Ejecutar configuraciones ..." y crear una nueva configuración de ejecución C C Unidad/++

  2. Establezca el proyecto en su proyecto y la aplicación C/C++ en su aplicación en la pestaña principal. Establezca Test Runner en Google Test Runner en la pestaña C/C++ Testing.

(7.notificaciones de error pueden se quedan en la interfaz gráfica del eclipse, si este es el caso, volver a clasificar el proyecto podría ayudar)

22

Paso 1 Instalar Eclipse

Si Eclipse no está ya instalado en la máquina, a continuación, obtener la última versión del Eclipse IDE para C/C++ Developers desde la página de descargas de Eclipse (http://www.eclipse.org/downloads/).

Si Eclipse ya está instalado pero solo para Java, descargue el complemento C++ siguiendo estas instrucciones.

a. Eclipse abierta y haga clic en Ayuda-> Instalar nuevo software

enter image description here

b. En el cuadro Trabajar con: escriba http://download.eclipse.org/tools/cdt/releases/kepler. Después de unos momentos, se rellenará el cuadro Nombre. Seleccione los siguientes componentes: Características

  • CDT principal -> C/C++ Herramientas de desarrollo Características
  • CDT principal -> C/C++ Herramientas de desarrollo SDK
  • CDT Características opcionales -> C/C++ Testing Unidad de Apoyo
  • CDT Características opcionales -> C/C++ de prueba Unidad de Apoyo Fuente
  • CDT Características opcionales -> C/C++ Visual C++ Soporte

enter image description here

c. Haga clic en Siguiente, acepte las declaraciones y luego Termine.

Paso 2 Descargar Cygwin

Instalar Cygwin haciendo clic en el enlace Configuración-x86_64.exe en la página de instalación de Cygwin (http://www.cygwin.com/install.html). Después de ejecutar, haga clic en Siguiente a través de los valores predeterminados hasta llegar a la ventana Seleccionar paquetes.

enter image description here

Usted tendrá que buscar e instalar dos paquetes: gcc y hacer.

El primer término de búsqueda es gcc. Busque gcc y luego abra la carpeta Devel. Marque los siguientes paquetes para instalar haciendo clic en la palabra Omitir (luego cambiará al número de compilación, que puede ser más alto que el que se muestra aquí): gcc-core, gcc-g ++ y libgcc1.

enter image description here

El segundo término de búsqueda es hacer. Aquí, solo necesitaremos la marca de paquete Devel.

enter image description here

Una vez que éstos se han seleccionado, haga clic en Siguiente para instalar.

Paso 3 Descargar y construir proyecto de prueba Google

Descargar la última versión de GoogleTest de https://code.google.com/p/googletest/downloads/list, y extraer el contenido del archivo zip en un directorio común. Es importante que todos los usuarios puedan acceder a este directorio.

para construir el proyecto de prueba Google:

  1. abierto Cygwin (encontrar el directorio de instalación de Cygwin y haga doble clic en Cygwin.bat).
  2. Cambiar el directorio de trabajo actual a la descomprimido GoogleTest hacen directorio: cd c:/<<yourpath>>/gtest-1.7.0/make/
  3. construir el proyecto: make
  4. crear una biblioteca de archivado fuera del GTEST-all.o archivo: ar -rv libgtest.a gtest-all.o

Paso 4 Agregue el directorio Cygwin bin a la variable PATH de las computadoras

Siga las instrucciones en esta página para su versión de Windows: http://www.java.com/en/download/help/path.xml, para agregar el directorio Cygwins bin a la variable de entorno PATH de las computadoras. (normalmente agregando; C: \ cygwin64 \ bin al final del valor actual).

Paso 5 Crear un nuevo proyecto que utiliza GoogleTest

inicio Eclipse y seleccione Archivo-> Nuevo-> Proyecto C++. Ingrese los valores a continuación y haga clic en Finalizar.

enter image description here

En el Proyecto Explora, haga clic en el nombre del proyecto y seleccione Propiedades. En C/C++ Build, cambie el tipo de generador a Internal Builder.

enter image description here

marco de la C/C++ composiciones, seleccione Configuración y, a continuación, haga clic en la carpeta bajo Cygwin C++ Compiler Incluye. Haga clic en el botón Agregar en el cuadro superior y luego busque la carpeta de inclusión GoogleTest.

enter image description here

Por último, en la carpeta de Cygwin C++ Linker, seleccionar Varios y luego haga clic en el icono Agregar en Otros objetos. Busque el archivo libgtest.a que compiló en el paso 3 (debe estar en el directorio make de la carpeta gtest descomprimida).

enter image description here

eso es todo! Ahora estás listo para probarlo.

Paso 6 escribir algo de código que utiliza GoogleTest

  • Añadir una carpeta de origen haciendo clic en Archivo-> Nuevo-> carpeta de origen. Llámelo src.
  • Agregue un archivo de encabezado haciendo clic con el botón derecho en la carpeta src y seleccione Nuevo-> Archivo de encabezado. Llame a este archivo Counter.h.
  • Agregue un archivo fuente haciendo clic derecho en la carpeta src y seleccione Nuevo-> Archivo fuente. Llame al este archivo Counter.cpp.
  • Agregue otro archivo fuente y llámelo Counter_Tests.cpp.

Copia y pega el siguiente código en los archivos correspondientes:

Counter.h

class Counter { 
private: 
     int mCounter; 
public:  
     Counter() : mCounter(0) {} 
     int Increment();  
}; 

Counter.cpp

#include <stdio.h> 
#include "Counter.h" 

int Counter::Increment() {  
     return mCounter++; 
} 

Counter_Tests.cpp

#include "gtest/gtest.h" 
#include "Counter.h" 

TEST(Counter, Increment) { 
     Counter c;  
     EXPECT_EQ(0, c.Increment()); 
     EXPECT_EQ(1, c.Increment()); 
     EXPECT_EQ(2, c.Increment()); 
} 

int main(int argc, char **argv) {  
     ::testing::InitGoogleTest(&argc, argv); 
     return RUN_ALL_TESTS(); 
} 

En el menú Proyecto, seleccione Construir todo. Ahora, para conectar el marco de prueba de la unidad GoogleTest, seleccione Ejecutar configuraciones en el menú Ejecutar. Desde este cuadro de diálogo, seleccione Unidad C/C++ y haga clic en el botón Nuevo.

enter image description here

Debe rellenar este nombre del proyecto automáticamente bajo Aplicación C++/C, si no haz clic en Buscar Proyecto para seleccionar este proyecto. A continuación, haga clic en la pestaña Prueba de C/C++. En el menú desplegable Corredores de pruebas, selecciona Google Tests Runner y luego haz clic en Ejecutar para ver la magia.

enter image description here

A continuación se muestra una instantánea del resultado. Después de escribir más códigos/pruebas, puede hacer clic en el botón resaltado en rojo para recompilar y volver a ejecutar rápidamente todas las pruebas.

enter image description here

+1

muchas gracias por este minucioso tutorial. Solo una cosa, mi marco de prueba de google ** no ** generó ** libgtest.a **, así que tuve que esquiar; pasos 3.4 y el último paso de 5. Pero al final, todo funcionó como un encanto. gracias de nuevo. – narengi

+0

Muchas gracias, esta debería ser la respuesta aceptada. – Alex

0

he Bandeja su solución y funciona bien. Puedo decir que para compilar gtest no está muy claro en el README. TXT.

He ejecutado el archivo MAKE en el directorio/make a través de una consola cygwin. En mi caso, el compilador me aconseja que no encuentre la biblioteca pthread. Así que he modificado la línea

CXXFLAGS += -g -Wall -Wextra -pthread

y lo cambió a

CXXFLAGS += -g -Wall -Wextra -lpthread

La salida que se ve es gtest_main.a. Luego he cambiado el nombre de este archivo a libgtest.a y lo copio al C:\cygwin\lib directory.

Luego configuré mi proyecto de eclipse para usar cygwin y agregué gtest y pthread como dices ... ¡y funciona!

espero que pueda ayudar a alguien

Cuestiones relacionadas