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?
Respuesta
Usando Riga's excellent answer, aquí es un resumen de cómo llegué a trabajar:
- creado un nuevo proyecto de C++ en Eclipse (elegí Ejecutable> Proyecto vacío)
- Descargado googletest 1.5.0, descomprimido, y corrieron
./scripts/fuse_gtest_files.py . <project-dir>/contrib
- 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é) - añadido un
src
directorio y añade una clase llamadaFoo
(véase más abajo de los contenidos deFoo.h
--que izquierdaFoo.cpp
vacío por ahora) - 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 origenFooTest.cpp
yAllTests.cpp
(ver a continuación el contenido) - ¡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:
- En Eclipse, abra el menú Archivo y seleccione Proyecto Nueva>C++
- Tipo de Proyecto: Ejecutable>Proyecto vacío
- Toolchain: Linux GCC
- Haga clic Terminar
- Abrir una terminal y
cd /tmp
wget http://googletest.googlecode.com/files/gtest-1.5.0.tar.bz2
cd gtest-1.5.0/
./scripts/fuse_gtest_files.py . <project-dir>/contrib
- vuelta en Eclipse, haga clic en la carpeta del proyecto en el panel Explorador de proyectos, a continuación, seleccione Actualizar
- 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 - 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 - 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 - Haga clic OK una vez más para aceptar los cambios en los valores de creación
- 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 - Haga clic derecho en la carpeta
src
en el panel Explorador de proyectos y seleccione Nueva >Clase, nombre queFoo
, a continuación, haga clic en OK (ver arriba contenido deFoo.h
;Foo.cpp
se puede dejar tal cual) - 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 - Siga los pasos anteriores para añadir
<project-name>/contrib
y<project-name>/src
como incluir los directorios al directoriotest
- Haga clic derecho en la carpeta
test
, a continuación, seleccione Nueva >archivo de origen añadirAllTests.cpp
a la carpetatest
, a continuación, repita los mismos pasos para agregarFooTest.cpp
(ver arriba contenidos) - 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 - 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
- Hit Ctrl-b para construir el proyecto
- Hit Ctrl-F11 para ejecutar el proyecto
- ¡Victoria!
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
No puedo ver el "Excluir de compilación" en el paso .10. ¿Me puedes ayudar? – eeadev
Estoy respondiendo a mí mismo: para mi eclipse de kepler, debe seguir esto: haga clic derecho-> propiedades-> c/C++ build-> configuración-> excluir ... – eeadev
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();
}
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.
Descargar GTEST e instalarlo como se describe en el readme.txt (usando cmake y hacer en linux)
Ir a "YourProject-> Propiedades-> C/C++ Generar-> Configuración> GCC C++ Compiler-> Incluye-> Incluir caminos" y añadir la carpeta incluyen en GTEST
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)
vaya a "Run-> Ejecutar configuraciones ..." y crear una nueva configuración de ejecución C C Unidad/++
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)
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
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
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.
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.
El segundo término de búsqueda es hacer. Aquí, solo necesitaremos la marca de paquete Devel.
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:
- abierto Cygwin (encontrar el directorio de instalación de Cygwin y haga doble clic en Cygwin.bat).
- Cambiar el directorio de trabajo actual a la descomprimido GoogleTest hacen directorio:
cd c:/<<yourpath>>/gtest-1.7.0/make/
- construir el proyecto:
make
- 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.
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.
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.
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).
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.
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.
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.
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
Muchas gracias, esta debería ser la respuesta aceptada. – Alex
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
- 1. Usando ASSERT y EXPECT en GoogleTest
- 2. googletest: ¿cómo configurarlo?
- 3. ¿Cómo compilar googletest en Windows usando mingw con msys?
- 4. GoogleTest: ¿Cómo omitir una prueba?
- 5. Compare contenedores con GoogleTest
- 6. GoogleTest: cómo establecer un punto de interrupción?
- 7. Cómo capturar stdout/stderr con googletest?
- 8. GoogleTest vs CPPUnit: Los hechos
- 9. ¿Cómo desarrollar usando JavaPOS en Eclipse?
- 10. GoogleTest: accediendo al entorno de una prueba
- 11. Usando el Eclipse AST
- 12. Usando Android build.xml en eclipse?
- 13. Usando GitHub con Eclipse
- 14. ¿Cómo zipalign el archivo .apk usando eclipse?
- 15. ¿Cómo depurar correctamente Java (Android) usando Eclipse?
- 16. ¿Cómo se desarrollan Java Servlets usando Eclipse?
- 17. ¿Cómo se genera mapping.txt usando Eclipse?
- 18. Usando C++ con Eclipse
- 19. ¿Cómo depuro correctamente usando Eclipse y Pydev?
- 20. Cómo depurar el servlet usando Eclipse
- 21. Cómo dibujar diagramas UML usando Eclipse
- 22. Perfil JUnit en Eclipse Indigo usando VisualVM
- 23. Consola interactiva usando Pydev en Eclipse?
- 24. ¿Cómo hacer una etiqueta en SVN usando eclipse?
- 25. ¿Cómo saber qué versión de ADT estamos usando en eclipse?
- 26. Cómo depurar en un dispositivo real (usando Eclipse/ADT)
- 27. Cómo generar javadoc usando ubuntu + eclipse en mi proyecto
- 28. Cómo depurar un punto muerto en Java usando Eclipse
- 29. Usando argc y argv en Eclipse?
- 30. Usando maven-release-plugin en Eclipse
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