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:
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:
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:
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:
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:
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