#include "gtest/gtest.h" #include "src/utils.cpp" #include #include // 测试 unused_function 函数 // 注意:该函数是静态函数,无法从外部直接调用 // 因此无法为其编写直接的单元测试 // 但我们可以验证它不会影响其他函数的行为 // 测试 test_unused_code 函数 class TestUnusedCodeTest : public ::testing::Test { protected: void SetUp() override { // 重定向 cout 到 stringstream,以便捕获输出 originalCoutBuffer = std::cout.rdbuf(); std::cout.rdbuf(testOutput.rdbuf()); } void TearDown() override { // 恢复 cout 的原始缓冲区 std::cout.rdbuf(originalCoutBuffer); } std::stringstream testOutput; std::streambuf* originalCoutBuffer; }; // 正常输入测试:验证函数正常执行且输出正确 TEST_F(TestUnusedCodeTest, NormalExecution) { // 调用函数 test_unused_code(); // 验证输出 std::string output = testOutput.str(); // 移除可能的换行符 if (!output.empty() && output.back() == '\n') { output.pop_back(); } EXPECT_EQ(output, "200"); } // 边界值测试:验证函数在多次调用后仍然正常工作 TEST_F(TestUnusedCodeTest, MultipleCalls) { // 第一次调用 test_unused_code(); std::string output1 = testOutput.str(); // 清空输出缓冲区 testOutput.str(""); testOutput.clear(); // 第二次调用 test_unused_code(); std::string output2 = testOutput.str(); // 移除可能的换行符 if (!output1.empty() && output1.back() == '\n') { output1.pop_back(); } if (!output2.empty() && output2.back() == '\n') { output2.pop_back(); } EXPECT_EQ(output1, "200"); EXPECT_EQ(output2, "200"); } // 特殊场景测试:验证函数不会抛出异常 TEST_F(TestUnusedCodeTest, NoExceptionThrown) { // 验证函数调用不会抛出任何异常 EXPECT_NO_THROW(test_unused_code()); } // 特殊场景测试:验证函数执行后程序状态正常 TEST_F(TestUnusedCodeTest, ProgramStateUnaffected) { // 记录调用前的输出流状态 auto beforeState = std::cout.rdstate(); // 调用函数 test_unused_code(); // 验证输出流状态未改变(除了正常的输出操作) auto afterState = std::cout.rdstate(); EXPECT_EQ(beforeState, afterState); } // 主函数 int main(int argc, char **argv) { ::testing::InitGoogleTest(&argc, argv); return RUN_ALL_TESTS(); }