IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C++ Discussion :

Utilisation de Google Test


Sujet :

C++

  1. #1
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2015
    Messages
    80
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Doubs (Franche Comté)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2015
    Messages : 80
    Points : 63
    Points
    63
    Par défaut Utilisation de Google Test
    bonjour,
    j'essaye de configurer GoogleTest sur CLion il semblerais que j'y soit finalement arriver en suivant le tutoriel suivant
    https://medium.com/@TimothyHelton/c-...n-d508f6f4ad05
    en tout cas le teste par défaut fonctionne, mais je n'arrive pas a effectuer mes propres Test par example
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    #include "gtest/gtest.h"
    #include "../../src/DataMapper/h/RulesDataMapper.h"
     
        TEST(Rule_DataMapper, Evaluate) {
        RulesDataMapper* r1 = new RulesDataMapper();
        ERulesName e = Rule_1_2s;
        ASSERT_FALSE(r1->updateWithNameAndStatement(e, true));
    }
    ceci et un test bateau la fonction me retourne False

    mais lorsque j'execute le test un erreur est retourner :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    CMakeFiles\Unit_Tests_run.dir/objects.a(test_example.cpp.obj): In function `ZN29Rule_DataMapper_Evaluate_Test8TestBodyEv':
    C:/Users/Desktop/Westguard-SSM/WestgardBrick/tests/unit_tests/test_example.cpp:18: undefined reference to `RulesDataMapper::RulesDataMapper()'
    collect2.exe: error: ld returned 1 exit status
    mingw32-make.exe[3]: *** [tests\unit_tests\CMakeFiles\Unit_Tests_run.dir\build.make:100: tests/unit_tests/Unit_Tests_run.exe] Error 1
    mingw32-make.exe[2]: *** [CMakeFiles\Makefile2:408: tests/unit_tests/CMakeFiles/Unit_Tests_run.dir/all] Error 2
    mingw32-make.exe[1]: *** [CMakeFiles\Makefile2:420: tests/unit_tests/CMakeFiles/Unit_Tests_run.dir/rule] Error 2
    mingw32-make.exe: *** [Makefile:241: Unit_Tests_run] Error 2
    voici également mes fichiers CmakeList

    le CMakeList General
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    cmake_minimum_required(VERSION 3.9)
    project(WestgardBrick)
     
    set(CMAKE_CXX_STANDARD 11)
     
    set(SOURCE_FILES ../../cpp_project_template-master/main.cpp)
    add_executable(${CMAKE_PROJECT_NAME}_run ${SOURCE_FILES})
     
    include_directories(WestgardBrick/src)
     
    add_subdirectory(src)
    add_subdirectory(tests)
     
    target_link_libraries(${CMAKE_PROJECT_NAME}_run ${CMAKE_PROJECT_NAME}_lib)
     
    # Doxygen Build
    option(BUILD_DOC "Build Documentation" ON)
     
    find_package(Doxygen)
    if(DOXYGEN_FOUND)
        set(BUILD_DOC_DIR ${CMAKE_SOURCE_DIR}/build/docs)
        if(NOT EXISTS ${BUILD_DOC_DIR})
            file(MAKE_DIRECTORY ${BUILD_DOC_DIR})
        endif()
     
        set(DOXYGEN_IN ${CMAKE_CURRENT_SOURCE_DIR}/docs/Doxyfile)
        set(DOXYGEN_OUT ${CMAKE_CURRENT_BINARY_DIR}/Doxyfile)
        configure_file(${DOXYGEN_IN} ${DOXYGEN_OUT} @ONLY)
     
        message("Doxygen buld started")
        add_custom_target(Doxygen ALL
                COMMAND ${DOXYGEN_EXECUTABLE} ${DOXYGEN_OUT}
                WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
                COMMENT "Generating API documentation with Doxygen"
                VERBATIM)
    else(DOXYGEN_FOUND)
        message("Doxygen needs to be installed to generate the documentation.")
    endif(DOXYGEN_FOUND)
    CMakeList de mes Test:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    project(${CMAKE_PROJECT_NAME}_tests)
     
    # Clone Google Test
    set(GOOGLETEST_DIR ${CMAKE_SOURCE_DIR}/tests/lib/googletest)
    if(NOT EXISTS ${GOOGLETEST_DIR})
        find_package(Git REQUIRED)
        execute_process(
            COMMAND ${GIT_EXECUTABLE} clone https://github.com/google/googletest ${GOOGLETEST_DIR}
        )
    endif()
     
    add_subdirectory(lib/googletest)
    add_subdirectory(unit_tests)
    CMakeList de mon code source:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    project(${CMAKE_PROJECT_NAME}_lib)
     
    set(HEADER_FILES
    )
    set(SOURCE_FILES
    )
     
    if (EXISTS ${SOURCE_FILES})
        # The library contains header and source files.
        add_library(${CMAKE_PROJECT_NAME}_lib STATIC
            ${SOURCE_FILES}
            ${HEADER_FILES}
        )
    else()
        # The library only contains header files.
        add_library(${CMAKE_PROJECT_NAME}_lib INTERFACE)
    endif()
    il est fortement probable que mon erreur se trouve dans les CMakeList car je débute avec CMake

  2. #2
    Rédacteur/Modérateur


    Homme Profil pro
    Network game programmer
    Inscrit en
    Juin 2010
    Messages
    7 130
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Canada

    Informations professionnelles :
    Activité : Network game programmer

    Informations forums :
    Inscription : Juin 2010
    Messages : 7 130
    Points : 33 063
    Points
    33 063
    Billets dans le blog
    4
    Par défaut
    Salut,

    undefined reference to `RulesDataMapper::RulesDataMapper() est une erreur de compilation (de linker), pas de Google Test. Il semblerait que tu ne compiles pas l'implémentation de RulesDataMapper dans ton projet.
    Vu que tu as un include, et qu'il semble correct, il faut aussi ajouter le .cpp correspondant dans ton projet pour le compiler.

  3. #3
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2015
    Messages
    80
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Doubs (Franche Comté)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2015
    Messages : 80
    Points : 63
    Points
    63
    Par défaut
    merci beaucoup c'est bien ça le problème manquait juste le .cpp

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. AJAX-> Utiliser le Google Web Toolkit avec le framework ZEND
    Par Ericx_25 dans le forum Zend Framework
    Réponses: 1
    Dernier message: 25/06/2008, 15h03
  2. [cURL] utilisation avec google traduction
    Par loacast dans le forum Bibliothèques et frameworks
    Réponses: 3
    Dernier message: 26/04/2007, 16h50
  3. Conditions d'utilisation de Google Map
    Par 585512 dans le forum Services
    Réponses: 3
    Dernier message: 12/03/2007, 18h50
  4. C# utilisation api google
    Par mohican13 dans le forum Windows Forms
    Réponses: 2
    Dernier message: 20/07/2006, 09h03

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo