73 lines
2.4 KiB
C++
73 lines
2.4 KiB
C++
#include "gtest/gtest.h"
|
||
#include "src/utils.cpp"
|
||
#include <iostream>
|
||
#include <sstream>
|
||
|
||
// 测试未使用函数
|
||
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();
|
||
} |