GoogleTest 使用指南 | 测试模板函数
GoogleTest 使用指南 | 测试模板函数
min.h:
// min.h
#ifndef MIN_H
#define MIN_H
// 模板函数的声明和定义都放在头文件中
template <typename T>
T min(T a, T b) {
return (a < b) ? a : b;
}
#endif // MIN_H
test_min.cpp:
#include "gtest/gtest.h"
#include "min.h"
// 使用类型化测试
template <typename T>
class MinFunctionTest : public ::testing::Test {};
typedef ::testing::Types<int, double, char> TestTypes;
TYPED_TEST_SUITE(MinFunctionTest, TestTypes);
TYPED_TEST(MinFunctionTest, ReturnSmaller) {
TypeParam a = static_cast<TypeParam>(5);
TypeParam b = static_cast<TypeParam>(3);
EXPECT_EQ(min(a, b), b);
EXPECT_EQ(min(b, a), b);
}
测试的执行结果:
"/Users/xiye/CppProjects/unit-test-example/out/build/Clang 17.0.0 arm64-apple-darwin24.6.0/test_min"
➜ Clang 17.0.0 arm64-apple-darwin24.6.0 "/Users/xiye/CppProjects/unit-test-example/out/build/Clang 17.0.0 arm64-apple-darwin24.6.0/test_min"
Running main() from /Users/xiye/CppProjects/unit-test-example/out/build/Clang 17.0.0 arm64-apple-darwin24.6.0/_deps/googletest-src/googletest/src/gtest_main.cc
[==========] Running 3 tests from 3 test suites.
[----------] Global test environment set-up.
[----------] 1 test from MinFunctionTest/0, where TypeParam = int
[ RUN ] MinFunctionTest/0.ReturnSmaller
[ OK ] MinFunctionTest/0.ReturnSmaller (0 ms)
[----------] 1 test from MinFunctionTest/0 (0 ms total)
[----------] 1 test from MinFunctionTest/1, where TypeParam = double
[ RUN ] MinFunctionTest/1.ReturnSmaller
[ OK ] MinFunctionTest/1.ReturnSmaller (0 ms)
[----------] 1 test from MinFunctionTest/1 (0 ms total)
[----------] 1 test from MinFunctionTest/2, where TypeParam = char
[ RUN ] MinFunctionTest/2.ReturnSmaller
[ OK ] MinFunctionTest/2.ReturnSmaller (0 ms)
[----------] 1 test from MinFunctionTest/2 (0 ms total)
[----------] Global test environment tear-down
[==========] 3 tests from 3 test suites ran. (0 ms total)
[ PASSED ] 3 tests.
912

被折叠的 条评论
为什么被折叠?



