2011-05-05 10 views
24

Tengo una biblioteca C++ muy simple (un archivo de cabecera, un archivo .cpp). Quiero escribir pruebas unitarias para este proyecto utilizando el Marco de prueba de Google C++.Ejemplo más simple de usar Google C++ Testing Framework con CMake

Aquí está la estructura de directorios:

~/project1 
| 
|-- project1.cpp 
|-- project1.h 
|-- project1_unittests.cpp 
\-- CMakeLists.txt 

No pienso escribir mi propia función main(). Quiero vincular con gtest_main como se menciona en el primer. ¿Qué debe contener CMakeLists.txt?

Respuesta

25

Habilitar subsistema de prueba incorporada de CMake:

# For make-based builds, defines make target named test. 
# For Visual Studio builds, defines Visual Studio project named RUN_TESTS. 
enable_testing() 

compilar un ejecutable que se ejecutará las pruebas unitarias y vincularlo con GTEST y gtest_main:

add_executable(runUnitTests 
    project1_unittests.cpp 
) 
target_link_libraries(runUnitTests gtest gtest_main) 

Añadir una prueba que se ejecuta este ejecutable :

add_test(
    NAME runUnitTests 
    COMMAND runUnitTests 
) 
+0

Muchas gracias. Esto ayudó mucho. Tuve que enlazar con gtest, gtest_main y pthread. También tuve que especificar rutas absolutas para libgtest.a y libgtest_main.a; ¿Hay alguna forma mejor de agregar estas bibliotecas estáticas a la ruta de búsqueda del enlazador? –

+0

¡Entendido! Establecí y exporté GTEST_ROOT en bash y luego include_directories ($ ENV {GTEST_ROOT}/include) con link_directories ($ ENV {GTEST_ROOT}). –

+2

O simplemente podría decir cmake -DGTEST_ROOT = ~/path/to/googletestroot .. –

Cuestiones relacionadas