推荐答案
// www.javascriptcn.com code example
#include <gtest/gtest.h>
// 要测试的函数
int Add(int a, int b) {
return a + b;
}
// 测试用例
TEST(AddTest, HandlesPositiveInput) {
EXPECT_EQ(Add(1, 2), 3);
EXPECT_EQ(Add(10, 20), 30);
}
TEST(AddTest, HandlesNegativeInput) {
EXPECT_EQ(Add(-1, -2), -3);
EXPECT_EQ(Add(-10, -20), -30);
}
TEST(AddTest, HandlesMixedInput) {
EXPECT_EQ(Add(-1, 1), 0);
EXPECT_EQ(Add(10, -5), 5);
}
int main(int argc, char **argv) {
::testing::InitGoogleTest(&argc, argv);
return RUN_ALL_TESTS();
}本题详细解读
1. 引入 Google Test 头文件
首先,需要在代码中引入 Google Test 的头文件:
#include <gtest/gtest.h>
2. 定义要测试的函数
在编写测试用例之前,需要先定义要测试的函数。例如,我们定义了一个简单的加法函数 Add:
int Add(int a, int b) {
return a + b;
}3. 编写测试用例
使用 TEST 宏来定义测试用例。TEST 宏的第一个参数是测试套件的名称,第二个参数是测试用例的名称。在测试用例中,使用 EXPECT_EQ 宏来断言期望的结果。
例如,我们编写了三个测试用例:
HandlesPositiveInput:测试正数输入。HandlesNegativeInput:测试负数输入。HandlesMixedInput:测试正负数混合输入。
// www.javascriptcn.com code example
TEST(AddTest, HandlesPositiveInput) {
EXPECT_EQ(Add(1, 2), 3);
EXPECT_EQ(Add(10, 20), 30);
}
TEST(AddTest, HandlesNegativeInput) {
EXPECT_EQ(Add(-1, -2), -3);
EXPECT_EQ(Add(-10, -20), -30);
}
TEST(AddTest, HandlesMixedInput) {
EXPECT_EQ(Add(-1, 1), 0);
EXPECT_EQ(Add(10, -5), 5);
}4. 运行测试
在 main 函数中,初始化 Google Test 并运行所有测试用例:
int main(int argc, char **argv) {
::testing::InitGoogleTest(&argc, argv);
return RUN_ALL_TESTS();
}5. 编译和运行
确保你已经安装了 Google Test,并使用以下命令编译和运行测试:
g++ -std=c++11 -isystem /path/to/gtest/include -pthread test.cpp /path/to/gtest/libgtest.a /path/to/gtest/libgtest_main.a -o test ./test
6. 结果
如果所有测试用例都通过,你将看到类似以下的输出:
[==========] 3 tests from 3 test cases ran. [==========] 3 tests passed.
如果有测试失败,Google Test 会详细指出哪个测试用例失败了,并显示期望值和实际值。