#include "gtest/gtest.h" #include "src/utils.cpp" #include #include // 测试未使用函数 TEST(UtilsTest, UnusedFunctionNoCrash) { // 测试目标:验证调用 unused_function 不会导致程序崩溃 // 由于该函数没有参数和返回值,主要测试其可执行性 EXPECT_NO_THROW(unused_function()); } TEST(UtilsTest, UnusedFunctionNoSideEffects) { // 测试目标:验证调用 unused_function 不会产生可观测的副作用 // 该函数内部只定义局部变量,不应影响外部状态 // 由于函数是静态的且无返回值,只能验证调用不会抛出异常 EXPECT_NO_THROW(unused_function()); // 可以添加一些全局状态检查(如果有相关全局变量的话) // 但当前函数没有操作任何全局状态,所以只需确保调用安全 } // 测试未使用变量函数 TEST(UtilsTest, TestUnusedCodeOutput) { // 测试目标:验证 test_unused_code 函数输出正确值 // 重定向标准输出以捕获函数输出 std::stringstream buffer; std::streambuf* old = std::cout.rdbuf(buffer.rdbuf()); test_unused_code(); std::cout.rdbuf(old); // 恢复标准输出 // 验证输出是否为 "200\n"(y的值加换行符) EXPECT_EQ(buffer.str(), "200\n"); } TEST(UtilsTest, TestUnusedCodeNoException) { // 测试目标:验证 test_unused_code 函数不会抛出异常 EXPECT_NO_THROW(test_unused_code()); } TEST(UtilsTest, TestUnusedCodeMultipleCalls) { // 测试目标:验证多次调用 test_unused_code 函数行为一致 std::stringstream buffer1, buffer2; std::streambuf* old = std::cout.rdbuf(buffer1.rdbuf()); test_unused_code(); std::cout.rdbuf(buffer2.rdbuf()); test_unused_code(); std::cout.rdbuf(old); // 恢复标准输出 // 验证两次调用输出相同 EXPECT_EQ(buffer1.str(), buffer2.str()); EXPECT_EQ(buffer1.str(), "200\n"); } // 边界条件测试:虽然这两个函数没有参数,但可以测试调用频率 TEST(UtilsTest, HighFrequencyCalls) { // 测试目标:验证高频调用不会导致问题 for (int i = 0; i < 1000; ++i) { EXPECT_NO_THROW(unused_function()); EXPECT_NO_THROW(test_unused_code()); } } // 主函数 int main(int argc, char **argv) { ::testing::InitGoogleTest(&argc, argv); return RUN_ALL_TESTS(); }