From d5849832d343a4dd9b8230599f667be5e4d37f9a Mon Sep 17 00:00:00 2001 From: zhangxiaokun Date: Tue, 9 Mar 2021 17:40:10 +0800 Subject: [PATCH] enable gmock for test --- cmake/external_libs/gtest.cmake | 21 ++++++++- tests/ut/ge/CMakeLists.txt | 21 +++++---- .../ge/graph/load/davinci_model_unittest.cc | 45 +++++++++++++++++++ 3 files changed, 76 insertions(+), 11 deletions(-) diff --git a/cmake/external_libs/gtest.cmake b/cmake/external_libs/gtest.cmake index f2f50e7d..39888110 100755 --- a/cmake/external_libs/gtest.cmake +++ b/cmake/external_libs/gtest.cmake @@ -27,7 +27,7 @@ ExternalProject_Add(gtest_build URL ${REQ_URL} TLS_VERIFY OFF CONFIGURE_COMMAND ${CMAKE_COMMAND} -DCMAKE_CXX_FLAGS=${gtest_CXXFLAGS} -DCMAKE_INSTALL_PREFIX=${CMAKE_INSTALL_PREFIX}/gtest - -DBUILD_TESTING=OFF -DCMAKE_POSITION_INDEPENDENT_CODE=ON -DBUILD_SHARED_LIBS=ON -DCMAKE_MACOSX_RPATH=TRUE -Dgtest_disable_pthreads=ON + -DBUILD_TESTING=OFF -DCMAKE_POSITION_INDEPENDENT_CODE=ON -DBUILD_SHARED_LIBS=ON -DCMAKE_MACOSX_RPATH=TRUE BUILD_COMMAND $(MAKE) INSTALL_COMMAND $(MAKE) install EXCLUDE_FROM_ALL TRUE @@ -52,10 +52,27 @@ set_target_properties(gtest_main PROPERTIES target_include_directories(gtest INTERFACE ${GTEST_PKG_DIR}/include) target_include_directories(gtest_main INTERFACE ${GTEST_PKG_DIR}/include) + +add_library(gmock SHARED IMPORTED) + +set_target_properties(gmock PROPERTIES + IMPORTED_LOCATION ${GTEST_PKG_DIR}/lib/libgmock.so +) + +add_library(gmock_main SHARED IMPORTED) + +set_target_properties(gmock_main PROPERTIES + IMPORTED_LOCATION ${GTEST_PKG_DIR}/lib/libgmock_main.so +) + +target_include_directories(gmock INTERFACE ${GTEST_PKG_DIR}/include) +target_include_directories(gmock_main INTERFACE ${GTEST_PKG_DIR}/include) + + set(INSTALL_BASE_DIR "") set(INSTALL_LIBRARY_DIR lib) -install(FILES ${GTEST_PKG_DIR}/lib/libgtest.so ${GTEST_PKG_DIR}/lib/libgtest_main.so OPTIONAL +install(FILES ${GTEST_PKG_DIR}/lib/libgtest.so ${GTEST_PKG_DIR}/lib/libgtest_main.so ${GTEST_PKG_DIR}/lib/libgmock.so ${GTEST_PKG_DIR}/lib/libgmock_main.so OPTIONAL DESTINATION ${INSTALL_LIBRARY_DIR}) add_dependencies(gtest gtest_build) diff --git a/tests/ut/ge/CMakeLists.txt b/tests/ut/ge/CMakeLists.txt index 91b756cc..d97ecca3 100755 --- a/tests/ut/ge/CMakeLists.txt +++ b/tests/ut/ge/CMakeLists.txt @@ -1028,7 +1028,8 @@ target_compile_definitions(ut_libge_multiparts_utest PRIVATE target_link_libraries(ut_libge_multiparts_utest $ - ge_build_common ge_load_common ge_execute_common ge_optimize_common ge_partition_common ge_prepare_common ge_single_op ge_ut_common gtest gtest_main ascend_protobuf ${COMMON_SHARED_LIBRARIES} json -lrt -ldl -lgcov + ge_build_common ge_load_common ge_execute_common ge_optimize_common ge_partition_common ge_prepare_common ge_single_op ge_ut_common + gtest gtest_main gmock gmock_main ascend_protobuf ${COMMON_SHARED_LIBRARIES} json -lrt -ldl -lgcov ) # libge_others_utest @@ -1047,7 +1048,8 @@ target_compile_options(ut_libge_others_utest PRIVATE target_link_libraries(ut_libge_others_utest $ - ge_load_common ge_execute_common ge_ut_common gtest gtest_main ascend_protobuf ${COMMON_SHARED_LIBRARIES} json -lrt -ldl -lgcov + ge_load_common ge_execute_common ge_ut_common + gtest gtest_main gmock gmock_main ascend_protobuf ${COMMON_SHARED_LIBRARIES} json -lrt -ldl -lgcov ) # libge_kernel_utest @@ -1065,7 +1067,8 @@ target_compile_options(ut_libge_kernel_utest PRIVATE target_link_libraries(ut_libge_kernel_utest $ - ge_load_common ge_ut_common gtest gtest_main ascend_protobuf ${COMMON_SHARED_LIBRARIES} json -lrt -ldl -lgcov + ge_load_common ge_ut_common + gtest gtest_main gmock gmock_main ascend_protobuf ${COMMON_SHARED_LIBRARIES} json -lrt -ldl -lgcov ) # libge_distinct_load_utest @@ -1090,10 +1093,10 @@ target_compile_definitions(ut_libge_distinct_load_utest PRIVATE ) target_link_libraries(ut_libge_distinct_load_utest - ${COMMON_SHARED_LIBRARIES} - $ - ge_execute_common ge_ut_common_format ge_load_common - ge_single_op ge_prepare_common - ge_optimize_common ge_build_common ge_partition_common ge_ut_common - gtest gtest_main ascend_protobuf json c_sec -lrt -ldl -lpthread -lgcov + ${COMMON_SHARED_LIBRARIES} + $ + ge_execute_common ge_ut_common_format ge_load_common + ge_single_op ge_prepare_common + ge_optimize_common ge_build_common ge_partition_common ge_ut_common + gtest gtest_main gmock gmock_main ascend_protobuf json c_sec -lrt -ldl -lpthread -lgcov ) diff --git a/tests/ut/ge/graph/load/davinci_model_unittest.cc b/tests/ut/ge/graph/load/davinci_model_unittest.cc index fe39adf6..18cc622b 100644 --- a/tests/ut/ge/graph/load/davinci_model_unittest.cc +++ b/tests/ut/ge/graph/load/davinci_model_unittest.cc @@ -15,6 +15,7 @@ */ #include +#include #define private public #define protected public @@ -897,4 +898,48 @@ TEST_F(UtestDavinciModel, Sink_time_profile) { model.SinkTimeProfile(current_data); } +class ClassTest { +public: + virtual ~ClassTest() {} + + virtual int func0() { + return 0; + } + virtual int func1(int a) { + return a; + } + virtual int func2(int a, int b) { + return a + b; + } + virtual int func3(int a, int b) const { + return a - b; + } +}; + +class MockTest : public ClassTest { +public: + MOCK_METHOD0(func0, int()); + MOCK_METHOD1(func1, int(int a)); + MOCK_METHOD2(func2, int(int a, int b)); + + MOCK_CONST_METHOD2(func3, int(int a, int b)); +}; + +TEST_F(UtestDavinciModel, simple_test_gmock) { + MockTest mock_stub; + + ON_CALL(mock_stub, func0()).WillByDefault(testing::Return(250)); + EXPECT_EQ(mock_stub.func0(), 250); + EXPECT_EQ(mock_stub.func0(), 250); + EXPECT_EQ(mock_stub.func0(), 250); + + EXPECT_CALL(mock_stub, func1(testing::_)).Times(2).WillOnce(testing::Return(1024)).WillOnce(testing::Return(250)); + EXPECT_EQ(mock_stub.func1(1), 1024); + EXPECT_EQ(mock_stub.func1(1), 250); + + EXPECT_CALL(mock_stub, func2(testing::_, 5)).Times(3).WillRepeatedly(testing::Return(1023)); + EXPECT_EQ(mock_stub.func2(1, 5), 1023); + EXPECT_EQ(mock_stub.func2(2, 5), 1023); + EXPECT_EQ(mock_stub.func2(3, 5), 1023); +} } // namespace ge