Unit test framework (#10)
* add first Unit Test with gtest and cmake dependencies * optionally build tests or not added some realistic tests * added ci compatible run configuration * added test dependencies -lpthread -lm to work in debian correctly * added some docs and option infos
This commit is contained in:
parent
335bcf1259
commit
463853dbd7
@ -11,7 +11,11 @@ build:
|
|||||||
- cd build
|
- cd build
|
||||||
- make
|
- make
|
||||||
- make package
|
- make package
|
||||||
|
- make test
|
||||||
|
- make build-xml
|
||||||
artifacts:
|
artifacts:
|
||||||
paths:
|
paths:
|
||||||
- "build/bin/*"
|
- "build/bin/*"
|
||||||
- "build/packages/*"
|
- "build/packages/*"
|
||||||
|
reports:
|
||||||
|
junit: report.xml
|
@ -18,6 +18,7 @@ SET(LIB_METHOD STATIC) #SHARED / STATIC
|
|||||||
|
|
||||||
option(BUILD_DOC "Build documentation" OFF) # additional dependency for Doxygen
|
option(BUILD_DOC "Build documentation" OFF) # additional dependency for Doxygen
|
||||||
option(PACKAGING "Allow Packaging to <exe>, <deb> or <rpm>" ON) # additional dependencies for RPMbuild,dpkg or NSIS
|
option(PACKAGING "Allow Packaging to <exe>, <deb> or <rpm>" ON) # additional dependencies for RPMbuild,dpkg or NSIS
|
||||||
|
option(TESTS "Build Tests" ON) # additional dependencies for GTEST - to build tests
|
||||||
set(WinBuild false)
|
set(WinBuild false)
|
||||||
|
|
||||||
SET(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin)
|
SET(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin)
|
||||||
@ -151,12 +152,11 @@ add_library(logger ${LIB_METHOD}
|
|||||||
|
|
||||||
|
|
||||||
SET(SOURCE
|
SET(SOURCE
|
||||||
src/main.cpp
|
|
||||||
src/IPRefresher.cpp
|
src/IPRefresher.cpp
|
||||||
src/Config.cpp
|
src/Config.cpp
|
||||||
src/IpHelper.cpp)
|
src/IpHelper.cpp)
|
||||||
|
|
||||||
add_executable(iprefresher ${SOURCE})
|
add_executable(iprefresher src/main.cpp ${SOURCE})
|
||||||
|
|
||||||
# LINK generated LIBS #
|
# LINK generated LIBS #
|
||||||
target_link_libraries(iprefresher api logger ${CURL_LIBRARIES} ${LIBCONFIG++_LIBRARIES})
|
target_link_libraries(iprefresher api logger ${CURL_LIBRARIES} ${LIBCONFIG++_LIBRARIES})
|
||||||
@ -294,3 +294,42 @@ if (BUILD_DOC)
|
|||||||
endif (DOXYGEN_FOUND)
|
endif (DOXYGEN_FOUND)
|
||||||
message("")
|
message("")
|
||||||
endif (BUILD_DOC)
|
endif (BUILD_DOC)
|
||||||
|
|
||||||
|
# Test Cases
|
||||||
|
if (TESTS)
|
||||||
|
include(GoogleTest)
|
||||||
|
|
||||||
|
mark_as_advanced(
|
||||||
|
BUILD_GMOCK BUILD_GTEST BUILD_SHARED_LIBS
|
||||||
|
gmock_build_tests gtest_build_samples gtest_build_tests
|
||||||
|
gtest_disable_pthreads gtest_force_shared_crt gtest_hide_internal_symbols
|
||||||
|
)
|
||||||
|
|
||||||
|
enable_testing()
|
||||||
|
|
||||||
|
macro(package_add_test TESTNAME)
|
||||||
|
# create an exectuable in which the tests will be stored
|
||||||
|
add_executable(${TESTNAME} ${ARGN})
|
||||||
|
# link the Google test infrastructure, mocking library, and a default main fuction to
|
||||||
|
target_link_libraries(${TESTNAME} gtest gtest_main -lpthread -lm api logger ${CURL_LIBRARIES} ${LIBCONFIG++_LIBRARIES})
|
||||||
|
# see https://cmake.org/cmake/help/v3.10/module/GoogleTest.html for more options to pass to it
|
||||||
|
gtest_discover_tests(${TESTNAME}
|
||||||
|
WORKING_DIRECTORY ${PROJECT_DIR}
|
||||||
|
EXTRA_ARGS --gtest_output=xml:report.xml -VV
|
||||||
|
PROPERTIES VS_DEBUGGER_WORKING_DIRECTORY "${PROJECT_DIR}"
|
||||||
|
)
|
||||||
|
set_target_properties(${TESTNAME} PROPERTIES FOLDER tests)
|
||||||
|
endmacro()
|
||||||
|
|
||||||
|
package_add_test(test1 tests/UnitTest.cpp ${SOURCE})
|
||||||
|
|
||||||
|
add_custom_target(build-test
|
||||||
|
"${CMAKE_COMMAND}" --build "${CMAKE_BINARY_DIR}" --target test
|
||||||
|
DEPENDS ${PROJECT_NAME}
|
||||||
|
COMMENT "Packing ${PROJECT_NAME}")
|
||||||
|
|
||||||
|
add_custom_target(build-xml
|
||||||
|
"bin/test1" --gtest_output="xml:report.xml"
|
||||||
|
DEPENDS ${PROJECT_NAME}
|
||||||
|
COMMENT "Packing ${PROJECT_NAME}")
|
||||||
|
ENDIF ()
|
30
tests/UnitTest.cpp
Normal file
30
tests/UnitTest.cpp
Normal file
@ -0,0 +1,30 @@
|
|||||||
|
//
|
||||||
|
// Created by lukas on 06.05.20.
|
||||||
|
//
|
||||||
|
|
||||||
|
#include <FileLogger.h>
|
||||||
|
#include <api/IPAPI.h>
|
||||||
|
#include <climits>
|
||||||
|
#include "gtest/gtest.h"
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Test if default ip is 0.0.0.0 when last ip file doesn't exist.
|
||||||
|
*/
|
||||||
|
TEST(ReadIp, testzeroIpIfNotExists) {
|
||||||
|
FileLogger logger;
|
||||||
|
std::string oldip = logger.readip();
|
||||||
|
ASSERT_EQ(oldip, "0.0.0.0");
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
* Test if default ip is 0.0.0.0 when last ip file doesn't exist.
|
||||||
|
*/
|
||||||
|
TEST(IPAPI, testIpAPIcheckIPSyntax) {
|
||||||
|
IPAPI ipapi;
|
||||||
|
std::string ip = ipapi.getGlobalIp();
|
||||||
|
if (ip.find('.') == ULONG_MAX) {
|
||||||
|
// error when ip doesn't contain a .
|
||||||
|
ASSERT_TRUE(false);
|
||||||
|
} else {
|
||||||
|
ASSERT_TRUE(true);
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user