diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt new file mode 100644 index 0000000..6784336 --- /dev/null +++ b/tests/CMakeLists.txt @@ -0,0 +1,25 @@ +cmake_minimum_required(VERSION 3.10.0) +project(test_prod_ts) +include(FetchContent) +if (MSVC) + add_compile_options(/utf-8) +endif() +FetchContent_Declare( + googletest + URL https://github.com/google/googletest/archive/03597a01ee50ed33e9dfd640b249b4be3799d395.zip +) +# For Windows: Prevent overriding the parent project's compiler/linker settings +set(gtest_force_shared_crt ON CACHE BOOL "" FORCE) +FetchContent_MakeAvailable(googletest) +set(CMAKE_CXX_STANDARD 17) +set(CMAKE_CXX_STANDARD_REQUIRED ON) +include_directories(${CMAKE_CURRENT_SOURCE_DIR}/../include) + +include(CTest) +enable_testing() + +add_executable(test_prod_ts test_OpenApiConfig.cpp ../src/main/java/com/example/demo/config/OpenApiConfig.java) + +target_link_libraries(test_prod_ts gtest gmock gtest_main) +include(GoogleTest) +gtest_discover_tests(test_prod_ts) \ No newline at end of file diff --git a/tests/test_OpenApiConfig.cpp b/tests/test_OpenApiConfig.cpp new file mode 100644 index 0000000..596ef39 --- /dev/null +++ b/tests/test_OpenApiConfig.cpp @@ -0,0 +1,28 @@ +#include +#include "OpenApiConfig.h" + +/** + * @brief 测试 customOpenAPI 函数正常返回非空 OpenAPI 对象并包含正确的文档信息。 + */ +TEST(OpenApiConfigTest, customOpenAPIReturnsValidOpenAPI) { + OpenApiConfig config; + OpenAPI api = config.customOpenAPI(); + + // 验证返回的 OpenAPI 对象不为空(通过 info 成员非空间接验证) + Info info = api.getInfo(); + EXPECT_FALSE(info.getTitle().empty()); + EXPECT_EQ(info.getTitle(), "信息管理系统 (IMS) API 文档"); + EXPECT_EQ(info.getVersion(), "1.0.0"); + EXPECT_EQ(info.getDescription(), "信息管理系统后端接口文档,支持用户权限管理、业务数据管理、统计分析、日志审计和系统对接等功能。"); + + // 验证联系人信息 + Contact contact = info.getContact(); + EXPECT_EQ(contact.getName(), "IMS 开发团队"); + EXPECT_EQ(contact.getEmail(), "dev@ims-demo.com"); + EXPECT_EQ(contact.getUrl(), "https://github.com/ims-demo"); + + // 验证许可证信息 + License license = info.getLicense(); + EXPECT_EQ(license.getName(), "Apache 2.0"); + EXPECT_EQ(license.getUrl(), "https://www.apache.org/licenses/LICENSE-2.0"); +} \ No newline at end of file