一. 1.3.0的编译错误解决
1.30版本是个很早的版本,其中的mvc文件夹中的sln文件时vs2005的,所以会有些小问题,类似:
严重性 代码 说明 项目 文件 行 禁止显示状态 错误 C1041 如果要将多个 CL.EXE 写入同一个 .PDB 文件,请使用 /F
挨个项目做如下3个属性设置:
链接器 之 调试 之 生成调试信息 设置成 (是(/DEBUG))
C/C++ 之 常规 之 调试信息格式 设置成 (C7 兼容(/Z7))
C/C++ 之 代码生成 之 启用字符串池 设置成 (是(/GF))
重新编译成功。
二. 编译1.11.0
安装cmake
使用cmake-gui 能够发现很多选项
第一次单击congfigure时,选择 vs2019和x64
第二次单击congfigure之前,做如下图所示配置,勾选:
,于是就生成了项目文件:googletest-distribution.sln
用VS2019打开这个.sln文件,
在“ALL BUILD”上右击,选择“生成”;
生成后,再在“INSTALL”上右击,选择“生成”,则会把.h .lib .dll文件安装到系统目录中去,例如上图配置中的CMAKE_INSTALL_PREFIX: d:/Program Files/gtest-...11_0/
然后把其中的bin目录绝对路径添加到系统的path环境变量中,以便程序运行时能够动态连接到相应的 .dll文件们。
可以在VS中找到测试项目,加断点追踪学习。
在CMD中运行其中最简单的测试项目:
三. gtest 思路和使用介绍
官方文档相当好:
Googletest Primer | GoogleTest
文字简练通顺,不太需要发翻译。若需翻译,评论区留言^^
比如,
1. 一个test program 包含多个 test suite, 一个test suite 包含多个 test。相关的tests 放入同一个test suite中。
2. 每个test的运行结果可是 success, nonfatal failure, or fatal failure.
3. test fixture class 测试用例固定装置类,是用户代码中,多个测试公用的对象或子例程代码的复用封装。
4. TEST注册一个测试代码段,针对某个test suite中的某个test。所以,TEST(...)的参数分别是TEST(testsuite的名称,test的名称)。比如,你可能定义了一组复数的四则运算和其他求模和辐角等的运算,想把针对这些测试的tests放在一个test suite中,取名为complexOperatorsSuite,其中的加法测试用例取名为 addTest,则可以写成:
TEST(complexOperatorsSuite, addTest ){
EXPECT_EQ(...);
}
gtest的main函数隐藏在它生成的 .lib文件中。
gtest会自动收集类似 TEST{}这样的代码结构作为运行项。
不想多说了,看着sample例程学起来比较容易,程序员还是适合看代码体会式的学习^^