win7+vs2012下使用gtest
2017-02-13 16:09
211 查看
引言
一获取gtest
二VS下编译
三demo测试
四运行结果
参考资料
在这里由于使用std::tuple,并且使用的个数达到10个,在VS2012里_VARIADIC_MAX默认定义为5,因此不支持5个以上的参数输入,因此编译提示上面的出错。
解决方法:在 include\gtest\gtest.h 中添加#define _VARIADIC_MAX 10
编译时会报错:warning MSB8012: TargetPath(D:\googletest-master\googletest\msvc\gtest/Debug\gtest.lib) does not match the Library’s OutputFile property value…
这是因为升级解决方案后,项目配置属性中目标文件名($(ProjectName))和库管理器中输出文件名($(OutDir)gtestd.lib)不一致导致。
解决方法1:修改库管理文件中输出文件名为$(SolutionName)/$(Configuration)\(ProjectName)(TargetExt)使其与“常规-输出目标文件名”一致
解决方法2:常规里面的“目标文件名”不要用宏,显式的写成输出文件名
Debug模式下采用解决方法2,设置目标文件名为gtestd,编译后得到gtestd.lib
Release模式下无该问题,编译后得到gtest.lib
另外:
在:C/C++ -> 代码生成 -> 运行库,若当前调试的是Debug版本,则设置为“多线程调试(/MTd)“;若为release,则设置为“多线程(/MT)”
在:链接器->输入->附加依赖项中,若当前调试的是Debug版本,添加D:\googletest-master\googletest\msvc\gtest\Debug\gtestd.lib;若为Release,则添加D:\googletest-master\googletest\msvc\gtest\Release\gtest.lib
demo代码如下:
vs2012 中使用 gtest
一获取gtest
二VS下编译
三demo测试
四运行结果
参考资料
引言
C++的程序员离不开单元测试,同时为了实践TDD原则,开始学习Google提供的单元测试框架gtest。一、获取gtest
从github获取gtest二、VS下编译
直接用vs2012打开msvc文件夹下的工程文件gtest.sln,提示单向升级,确认后打开工程,编译后报错:d:\googletest-master\googletest\include\gtest\gtest-printers.h(653): error C2977: “std::tuple”: 模板参数太多在这里由于使用std::tuple,并且使用的个数达到10个,在VS2012里_VARIADIC_MAX默认定义为5,因此不支持5个以上的参数输入,因此编译提示上面的出错。
解决方法:在 include\gtest\gtest.h 中添加#define _VARIADIC_MAX 10
#define GTEST_INCLUDE_GTEST_GTEST_H_ #define _VARIADIC_MAX 10 //add for vs2012 #include <limits> #include <vector>
编译时会报错:warning MSB8012: TargetPath(D:\googletest-master\googletest\msvc\gtest/Debug\gtest.lib) does not match the Library’s OutputFile property value…
这是因为升级解决方案后,项目配置属性中目标文件名($(ProjectName))和库管理器中输出文件名($(OutDir)gtestd.lib)不一致导致。
解决方法1:修改库管理文件中输出文件名为$(SolutionName)/$(Configuration)\(ProjectName)(TargetExt)使其与“常规-输出目标文件名”一致
解决方法2:常规里面的“目标文件名”不要用宏,显式的写成输出文件名
Debug模式下采用解决方法2,设置目标文件名为gtestd,编译后得到gtestd.lib
Release模式下无该问题,编译后得到gtest.lib
三、demo测试
新建win32控制台应用程序,如图所示配置工程属性:另外:
在:C/C++ -> 代码生成 -> 运行库,若当前调试的是Debug版本,则设置为“多线程调试(/MTd)“;若为release,则设置为“多线程(/MT)”
在:链接器->输入->附加依赖项中,若当前调试的是Debug版本,添加D:\googletest-master\googletest\msvc\gtest\Debug\gtestd.lib;若为Release,则添加D:\googletest-master\googletest\msvc\gtest\Release\gtest.lib
demo代码如下:
#include <gtest\gtest.h> #include <iostream> int Foo(int a, int b) // 求a和b的最大公约数 { if (a == 0 || b == 0) { throw "don't do that"; } int c = a % b; if (c == 0) return b; return Foo(b, c); } //TEST宏有两个参数,官方的对这两个参数的解释为:[TestCaseName,TestName] //有一种理解为:[TestSuiteName,TestCaseName] TEST(FooTest, HandleNoneZeroInput) { EXPECT_EQ(2, Foo(4, 10)); //EXPECT_EQ宏用来比较两个数字是否相等。失败时,案例继续执行 EXPECT_EQ(6, Foo(30, 18)); ASSERT_EQ(5, Foo(2.5, 5));// 失败时,当前函数返回,后面的语句将不会执行 EXPECT_EQ(2, Foo(16, 18)); } int main(int argc, char* argv[]) { testing::InitGoogleTest(&argc, argv); RUN_ALL_TESTS(); system("pause");//暂停控制台,便于调试观察;也可在cmd中直接运行生成的exe,查看运行结果 return 0; //return RUN_ALL_TESTS(); }
四、运行结果:
参考资料
玩转Google开源C++单元测试框架Google Test系列(gtest)之一 - 初识gtestvs2012 中使用 gtest
相关文章推荐
- VS2012 程序打包部署图文详解
- 关于VS2012自带的 性能分析 工具使用实例(图文介绍)
- vs2012 error c4996: This function or variable may be unsafe
- 详解VS2012发布网站步骤
- 解决VS2012 Express的There was a problem sending the command to the program问题
- vs2012创建的ado.net模型无法实例化的解决方案
- [编程工具]Visual Assist X 10.7.1916最新破解版本下载 支持VS202
- win7 64位下 VS2012搭建OpenCL开发环境( Intel显卡)
- 未找到与约束ContractName Microsoft.VisualStudio.Text.ITe
- C# 获取Sqlite数据库路径的问题
- java转cocos2d-x:Helloworld
- vs2012下编译protobuf
- C#连接postgresql数据库
- vs2012链接内置数据库 出现error26 解决方法
- vs2012 遇到 First_Chance Exception 的问题
- 侯捷《深入浅出MFC》中“Hello, MFC”如何改写到VS2012中
- vs2012 鼠标放类上面,点击右键出现:创建单元测试,你会了吗?
- VS2012如何通过ODBC连接到
- Win7下安装启动vs2012的程序版本不兼容问题解决方法
- 利用nmake工具编译时怎样制定framework版本