From a3d9e0fb5e71349b5cec7d87d94d8817c272e11f Mon Sep 17 00:00:00 2001 From: AI Agent Date: Mon, 13 Jul 2026 10:38:18 +0800 Subject: [PATCH] =?UTF-8?q?AI=20=E8=87=AA=E5=8A=A8=E7=94=9F=E6=88=90?= =?UTF-8?q?=E6=B5=8B=E8=AF=95=E7=94=A8=E4=BE=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- tests/CMakeLists.txt | 25 +++++++++++++++++++++++++ tests/test_OpenApiConfig.cpp | 28 ++++++++++++++++++++++++++++ 2 files changed, 53 insertions(+) create mode 100644 tests/CMakeLists.txt create mode 100644 tests/test_OpenApiConfig.cpp 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