在visual Studio中引入Google Test进行单元测试
因为工作,需要对函数进行单元测试。
根据需求选定了Google Test框架进行,单元测试。
开始时根据网上的教程 需要git Google Test的库。
后面发现visual Studio本身就有Google Test。
创建过程如下
首先点击工具,获取工具和功能
跳出的界面里点击使用C++的桌面开发,选择Google Test测试适配器
确定visual Studio安装了Google Test测试适配器,如果没有,安装。
点击新建,项目
搜索框里键入GOO第一个就是Google Test
点击下一步跳出
名为“Test Project Configuration”,用于配置Google Test和C++运行时库的使用方式。具体选项包括:
-
使用Google Test的方式:
-
静态库 (.lib)
-
动态库 (.dll)
-
-
C++运行时库:
-
动态链接(推荐)
-
静态链接
- 静态库 (.lib):如果希望简化部署并且减少运行时的依赖,可以选择静态库。这样所有的代码会被编译进最终的可执行文件。
-
动态库 (.dll):如果希望节省内存使用,并且允许更新单个库文件而不需要重新编译整个项目,可以选择动态库。
-
-
C++运行时库:
-
动态链接(推荐):通常推荐使用动态链接,这样可以共享C++运行时库,节省内存和减少可执行文件大小。静态链接:如果希望避免运行时依赖,确保所有必要的库都在一个可执行文件中,可以选择静态链接
-
-
这里我默认选择了静态库,和动态链接
系统会创建如下项目
这里点击开始调试,或者开始执行
如果弹出如下图,说明引入成功
接下来,尝试测试一下如下代码
int addint(int a, int b) {
return a + b;
}
float addfloat(float a, float b) {
return a + b;
}
在pch.cpp中实现函数
在pch.h中声明函数
在test.cpp中写测试的宏
#include "pch.h"
TEST(TestCaseName, TestName) {
EXPECT_EQ(1, 1);
EXPECT_TRUE(true);
}
// addint 测试用例
TEST(AddINT, HandlesPositiveInput) {
EXPECT_EQ(addint(1, 1), 2);
EXPECT_EQ(addint(2, 3), 5);
}
// addfloat 测试用例
TEST(AddFloatTest, HandlesPositiveInput) {
EXPECT_FLOAT_EQ(addfloat(1.5, 1.5), 3.0);
EXPECT_FLOAT_EQ(addfloat(2.0, 3.5), 5.5);
}
// 主函数运行所有的测试
int main(int argc, char** argv) {
::testing::InitGoogleTest(&argc, argv); // 初始化Google Test框架
int result = RUN_ALL_TESTS();
}
TEST(TestCaseName, TestName)
:
-
作用:定义一个测试用例。
-
参数:
TestCaseName
是测试套件的名称,TestName
是具体测试的名称。
EXPECT_EQ(val1, val2)
:
-
作用:断言
val1
和val2
相等。如果不相等,测试将失败。
EXPECT_FLOAT_EQ(val1, val2)
:
-
作用:断言两个浮点数
val1
和val2
相等,允许小范围误差。如果不相等,测试将失败。
EXPECT_TRUE(condition)
:
-
作用:断言
condition
为真。如果condition
为假,测试将失败。
::testing::InitGoogleTest(&argc, argv)
:
-
作用:初始化Google Test框架,解析命令行参数,配置Google Test。
RUN_ALL_TESTS()
:
-
作用:运行所有定义的测试用例,返回测试结果。
运行后结果如下
基本上就是这些,Google Test还有别的内置的宏和函数。
不过到时候用的时候,再查询使用。