写在前面
- 最近正在学习单元测试,对于一个零基础的人来说,还是蛮痛苦的
- 好记性不如烂笔头,把自己趟出来的路记录下来,提升自己的同时也可能帮到别人
基础知识
- gtest是Google开发的跨平台C++单元测试框架
- Visual Studio 2019已经集成了gtest
创建项目
- 打开VS 2019,创建新项目
- 搜索关键字 Google,可以得到 Google Test的项目模板:Write C++ unit tests using Google Test.
- 选择项目模板Google Test,点击下一步
- 配置项目名称和位置,点击创建
- 测试项目配置如下
- 等待VS创建好新项目:如图所示,创建好了名为myGTest的项目
编写用例
- 在test.cpp中编写函数Factorial() ,并编写Factorial() 的单元测试用例
#include "pch.h"
int Factorial(int n) {
int result = 1;
for (int i = 1; i <= n; i++) {
result *= i;
}
return result;
}
TEST(TestFactorialFunc, FirstGTest)
{
EXPECT_EQ(1, Factorial(1));
EXPECT_EQ(24, Factorial(4));
}
- 通过观察单元测试用例 TEST(TestFactorialFunc, FirstGTest) 可以看到,通过gtest编写测试用例还是蛮方便的
(1)我们需要使用TEST这个宏,它有两个参数,Google对这两个参数的解释为:TEST[TestCaseName,TestName],TestCaseName意味着测试用例集,TestName是TestCaseName的用例
(2)对检查点的检查,我们使用了EXPECT_EQ这个宏,这个宏用来比较两个数字是否相等
(3)Google打包了一系列EXPECT_* 和 ASSERT_* 的宏,EXPECT和ASSERT系列的区别就是:EXPECT_* 失败时,测试用例继续执行;ASSERT_*失败时,同一用例后面的语句将不再执行
TEST(TestFactorialFunc, FirstGTest)
{
EXPECT_EQ(1, Factorial(1));
EXPECT_EQ(24, Factorial(4));
}
- 执行结果如下图所示
一些总结
- 本文简单说明了gtest最基础的使用。gtest还有很多高级的用法,在后面的学习中继续总结
- 例子中使用TEST宏编写了一条测试用例,使用EXPECT_EQ设置了检查点
- 对于gtest测试框架,我们不用投入精力到测试框架本身,只需要关注测试用例的设计和编写