Răsfoiți Sursa

Z991239-527 #comment fix: #CMake 修复测试案例不执行的问题,原因是将GTest以动态库编译造成的影响

gifur 5 ani în urmă
părinte
comite
c94feb7819

+ 17 - 7
RVCComm/test/CMakeLists.txt

@@ -9,22 +9,32 @@ file(GLOB ${MODULE_PREFIX}_TESTS "${CMAKE_CURRENT_SOURCE_DIR}/*.cpp")
 #Google Test
 include_directories(${GTEST_ROOT})
 include_directories(${GMOCK_ROOT})
-list(APPEND comm_test_libraries gtest)
-list(APPEND comm_test_libraries gtest_main)
 list(APPEND comm_test_libraries RVCComm_a)
 
-list(APPEND addin_libs gmock)
-list(APPEND addin_libs gmock_main)
+list(APPEND GTEST_LIBS gtest)
+list(APPEND GTEST_LIBS gtest_main)
+
+list(APPEND GMOCK_LIBS gmock)
+list(APPEND GMOCK_LIBS gmock_main)
 
 foreach(test ${${MODULE_PREFIX}_TESTS})
 	get_filename_component(test_name ${test} NAME_WE)
 	add_executable(${test_name} ${test})
-	target_link_libraries(${test_name} ${comm_test_libraries} ${addin_libs})
+	if(${test_name} STREQUAL ClientCommTest)
+		target_link_libraries(${test_name} ${comm_test_libraries} ${GTEST_LIBS} ${GMOCK_LIBS})
+	else()
+		target_link_libraries(${test_name} ${comm_test_libraries} ${GTEST_LIBS})
+	endif()
 	set_property(TARGET ${test_name} PROPERTY FOLDER "test/rvccomm")
+	if (BUILD_SHARED_LIBS)
+		set_target_properties(${test_name} PROPERTIES COMPILE_DEFINITIONS 
+		"GTEST_LINKED_AS_SHARED_LIBRARY=1;RVCCOMM_LINKED_AS_STATIC_LIBRARY=1")
+	else()
+		set_target_properties(${test_name} PROPERTIES COMPILE_DEFINITIONS "RVCCOMM_LINKED_AS_STATIC_LIBRARY=1")
+	endif()
 	# 会将 测试的执行程序生成在指定的文件夹,并且带上编译的配置条件比如 Debug
 	set_target_properties(${test_name} PROPERTIES RUNTIME_OUTPUT_DIRECTORY "${TESTING_OUTPUT_DIRECTORY}")
-	set_target_properties(${test_name} PROPERTIES COMPILE_DEFINITIONS "RVCCOMM_LINKED_AS_STATIC_LIBRARY=1")
-	target_compile_definitions(${test_name} PUBLIC "GTEST_LINKED_AS_SHARED_LIBRARY")
+	message(STATUS "add test case: ${test_name}...")
 	add_test(NAME ${test_name} COMMAND ${TESTING_OUTPUT_DIRECTORY}/${test_name})
 	set_tests_properties(${teset_name} PROPERTIES FAIL_REGULAR_EXPRESSION "FAILED;ERROR;Failed;error")
 endforeach()

+ 13 - 0
RVCComm/test/ClientCommTest.cpp

@@ -67,3 +67,16 @@ TEST(ClientCommTest, TestConnectionAction)
 	EXPECT_TRUE(secure_client_mock->m_nRefCount == 1);
 	secure_client_mock->DecRefCount();
 }
+
+#ifdef GTEST_LINKED_AS_SHARED_LIBRARY
+
+int main(int argc, char** argv)
+{
+	printf("Running main() from %s\n", __FILE__);
+	testing::InitGoogleTest(&argc, argv);
+	return RUN_ALL_TESTS();
+}
+
+#endif // GTEST_LINKED_AS_SHARED_LIBRARY
+
+

+ 9 - 3
libtoolkit/test/CMakeLists.txt

@@ -58,15 +58,21 @@ foreach(test ${${MODULE_PREFIX}_TESTS})
 	get_filename_component(test_name ${test} NAME_WE)
 	add_executable(${test_name} ${test})
 	target_link_libraries(${test_name} ${comm_test_libraries})
-	target_compile_definitions(${test_name} PRIVATE "-DTOOLKIT_LINKED_AS_STATIC_LIBRARY")
+	#target_compile_definitions(${test_name} PRIVATE "-DTOOLKIT_LINKED_AS_STATIC_LIBRARY")
+		if (BUILD_SHARED_LIBS)
+		set_target_properties(${test_name} PROPERTIES COMPILE_DEFINITIONS 
+		"GTEST_LINKED_AS_SHARED_LIBRARY=1;TOOLKIT_LINKED_AS_STATIC_LIBRARY=1")
+	else()
+		set_target_properties(${test_name} PROPERTIES COMPILE_DEFINITIONS "TOOLKIT_LINKED_AS_STATIC_LIBRARY=1")
+	endif()
 	set_property(TARGET ${test_name} PROPERTY FOLDER "test/libtoolkit")
 	# 会将 测试的执行程序生成在指定的文件夹,并且带上编译的配置条件比如 Debug
 	set_target_properties(${test_name} PROPERTIES RUNTIME_OUTPUT_DIRECTORY "${TESTING_OUTPUT_DIRECTORY}")
 	message(STATUS "add test case: ${test_name}...")
 	if(${test_name} STREQUAL "test_file" OR ${test_name} STREQUAL "test_log")
-	add_test(NAME ${test_name} COMMAND ${TESTING_OUTPUT_DIRECTORY}/${test_name}  ${TEST_AREA})
+		add_test(NAME ${test_name} COMMAND ${TESTING_OUTPUT_DIRECTORY}/${test_name}  ${TEST_AREA})
 	else()
-	add_test(NAME ${test_name} COMMAND ${TESTING_OUTPUT_DIRECTORY}/${test_name})
+		add_test(NAME ${test_name} COMMAND ${TESTING_OUTPUT_DIRECTORY}/${test_name})
 	endif()
 	set_tests_properties(${teset_name} PROPERTIES FAIL_REGULAR_EXPRESSION "FAILED;ERROR;Failed;error")
 endforeach()

+ 19 - 6
spbase/test/CMakeLists.txt

@@ -7,12 +7,14 @@ file(GLOB ${MODULE_PREFIX}_TESTS "${CMAKE_CURRENT_SOURCE_DIR}/*.cpp")
 #Google Test
 include_directories(${GTEST_ROOT})
 include_directories(${GMOCK_ROOT})
-list(APPEND comm_test_libraries gtest)
-list(APPEND comm_test_libraries gtest_main)
+
 list(APPEND comm_test_libraries spbase_a)
 
-list(APPEND addin_libs gmock)
-list(APPEND addin_libs gmock_main)
+list(APPEND GTEST_LIBS gtest)
+list(APPEND GTEST_LIBS gtest_main)
+
+list(APPEND GMOCK_LIBS gmock)
+list(APPEND GMOCK_LIBS gmock_main)
 
 if(NOT MSVC)
 	set(TEST_AREA "${TESTING_OUTPUT_DIRECTORY}/${MODULE_NAME}_area")
@@ -31,10 +33,21 @@ set(TEST_CFG_AREA "${TEST_VERSION}/cfg")
 foreach(test ${${MODULE_PREFIX}_TESTS})
 	get_filename_component(test_name ${test} NAME_WE)
 	add_executable(${test_name} ${test})
-	target_link_libraries(${test_name} ${comm_test_libraries} ${addin_libs})
+	if(${test_name} STREQUAL SpSecureClientTest)
+		target_link_libraries(${test_name} ${comm_test_libraries} ${GMOCK_LIBS})
+	else()
+		target_link_libraries(${test_name} ${comm_test_libraries} ${GTEST_LIBS})
+	endif()
+	
+	if (BUILD_SHARED_LIBS)
+		set_target_properties(${test_name} PROPERTIES COMPILE_DEFINITIONS 
+		"GTEST_LINKED_AS_SHARED_LIBRARY=1;SPABASE_LINKED_AS_STATIC_LIBRARY=1")
+	else()
+		set_target_properties(${test_name} PROPERTIES COMPILE_DEFINITIONS "SPABASE_LINKED_AS_STATIC_LIBRARY=1")
+	endif()
 	set_property(TARGET ${test_name} PROPERTY FOLDER "test/spbase")
 	set_target_properties(${test_name} PROPERTIES RUNTIME_OUTPUT_DIRECTORY "${TESTING_OUTPUT_DIRECTORY}")
-	set_target_properties(${test_name} PROPERTIES COMPILE_DEFINITIONS "SPABASE_LINKED_AS_STATIC_LIBRARY=1")
+	message(STATUS "add test case: ${test_name}...")
 	add_test(NAME ${test_name} COMMAND ${TESTING_OUTPUT_DIRECTORY}/${test_name})
 	set_tests_properties(${teset_name} PROPERTIES FAIL_REGULAR_EXPRESSION "FAILED;ERROR;Failed;error")
 endforeach()

+ 6 - 6
spbase/test/SpBaseMiscTest.cpp

@@ -86,10 +86,10 @@ TEST(SpBaseTest, CSphereVectorTest)
 	std::cout << "Latitude: " << (int)latitude[0] << ":" << (int)latitude[1] << ":" << (int)latitude[2] << latitude[3] << "\n";
 }
 
-int main(int argc, char** argv)
-{
-	printf("Running main() from %s\n", __FILE__);
-	testing::InitGoogleTest(&argc, argv);
-	return RUN_ALL_TESTS();
-}
+//int main(int argc, char** argv)
+//{
+//	printf("Running main() from %s\n", __FILE__);
+//	testing::InitGoogleTest(&argc, argv);
+//	return RUN_ALL_TESTS();
+//}
 

+ 8 - 0
spbase/test/SpEmptyTest.cpp

@@ -0,0 +1,8 @@
+#include<gtest/gtest.h>
+
+TEST(SpEmptyTest, SpValidGTestRun)
+{
+	int run = 12345;
+	EXPECT_TRUE(run == 12345);
+	ASSERT_TRUE(run == 12345);
+}

+ 1 - 0
third_party/gtest/googlemock/CMakeLists.txt

@@ -54,6 +54,7 @@ endif()
 # if they are the same (the default).
 add_subdirectory("${gtest_dir}" "${gmock_BINARY_DIR}/${gtest_dir}")
 
+message("GMOCK BUILD PROJECT NAME: ${CMAKE_PROJECT_NAME}")
 
 # These commands only run if this is the main project
 if(CMAKE_PROJECT_NAME STREQUAL "gmock" OR CMAKE_PROJECT_NAME STREQUAL "googletest-distribution")

+ 2 - 0
third_party/gtest/googletest/CMakeLists.txt

@@ -63,6 +63,8 @@ if (COMMAND set_up_hermetic_build)
   set_up_hermetic_build()
 endif()
 
+message("GTEST BUILD PROJECT NAME: ${CMAKE_PROJECT_NAME}")
+
 # These commands only run if this is the main project
 if(CMAKE_PROJECT_NAME STREQUAL "gtest" OR CMAKE_PROJECT_NAME STREQUAL "googletest-distribution")