#include #include #include // 假设 RackInfo 结构体 struct RackInfo { std::string rackName; int unitCount; }; // 假设 list_racks 函数的声明,返回 std::vector std::vector list_racks(); // 测试夹具,用于准备公共测试数据 class ListRacksTest : public ::testing::Test { protected: void SetUp() override { // 在需要时初始化 } void TearDown() override { } }; // 正常输入测试:存在多个机架时,验证返回列表非空且信息正确 TEST_F(ListRacksTest, testListRacksNormal) { std::vector racks = list_racks(); ASSERT_FALSE(racks.empty()); EXPECT_GT(racks.size(), 0); // 假设至少有一个机架名称为已知值,例如 "ODF-A" bool found = false; for (const auto& rack : racks) { if (rack.rackName == "ODF-A") { found = true; EXPECT_GT(rack.unitCount, 0); break; } } EXPECT_TRUE(found) << "ODF-A rack should exist"; } // 边界值测试:没有机架时,返回空列表 TEST_F(ListRacksTest, testListRacksEmpty) { // 需要 mock 或控制 list_racks 返回空列表,假设系统根本没有配置机架 // 由于无法直接控制,此测试依赖于测试环境,此处仅给出示例逻辑 std::vector racks = list_racks(); EXPECT_TRUE(racks.empty()); } // 特殊场景测试:验证列表中的每个机架都有单元数量 TEST_F(ListRacksTest, testListRacksEachRackHasUnitCount) { std::vector racks = list_racks(); for (const auto& rack : racks) { EXPECT_GE(rack.unitCount, 0); // 单元数量应非负 } }