google test怎么进行单元测试,能举个例子吗
时间: 2024-01-07 10:03:00 浏览: 73
google test 单元测试框架
Google Test是C++的一种单元测试框架,可以帮助我们编写和运行自动化测试用例。下面是一个简单的例子,演示如何使用Google Test框架进行单元测试。
假设我们有一个名为`Factorial`的函数,该函数接受一个整数n并返回n的阶乘。我们想要编写一个测试来验证该函数是否按预期工作。
首先,我们需要包含Google Test头文件:
```c++
#include <gtest/gtest.h>
```
接下来,我们定义一个测试用例:
```c++
TEST(FactorialTest, HandlesPositiveInput) {
EXPECT_EQ(1, Factorial(0));
EXPECT_EQ(1, Factorial(1));
EXPECT_EQ(2, Factorial(2));
EXPECT_EQ(6, Factorial(3));
EXPECT_EQ(24, Factorial(4));
EXPECT_EQ(120, Factorial(5));
}
```
在这个测试用例中,我们使用`TEST`宏定义了一个名为`FactorialTest`的测试用例。该测试用例包含了多个测试用例,每个测试用例都使用`EXPECT_EQ`宏来验证函数的输出是否符合预期。
最后,我们需要定义一个`main`函数并使用`RUN_ALL_TESTS`宏运行所有测试:
```c++
int main(int argc, char** argv) {
testing::InitGoogleTest(&argc, argv);
return RUN_ALL_TESTS();
}
```
完整代码如下:
```c++
#include <gtest/gtest.h>
int Factorial(int n) {
return (n <= 1) ? 1 : n * Factorial(n - 1);
}
TEST(FactorialTest, HandlesPositiveInput) {
EXPECT_EQ(1, Factorial(0));
EXPECT_EQ(1, Factorial(1));
EXPECT_EQ(2, Factorial(2));
EXPECT_EQ(6, Factorial(3));
EXPECT_EQ(24, Factorial(4));
EXPECT_EQ(120, Factorial(5));
}
int main(int argc, char** argv) {
testing::InitGoogleTest(&argc, argv);
return RUN_ALL_TESTS();
}
```
在运行该测试用例之后,我们可以看到测试结果:
```
[==========] Running 1 test from 1 test case.
[----------] Global test environment set-up.
[----------] 1 test from FactorialTest
[ RUN ] FactorialTest.HandlesPositiveInput
[ OK ] FactorialTest.HandlesPositiveInput (0 ms)
[----------] 1 test from FactorialTest (0 ms total)
[----------] Global test environment tear-down
[==========] 1 test from 1 test case ran. (0 ms total)
[ PASSED ] 1 test.
```
这表示所有测试都通过了。如果其中一个测试失败,将会显示失败的详情。
阅读全文