用Visual Studio创建集成了gtest的命令行工程

gtest代码库中的sample代码

在gtest的代码库中,包含了10个sample的代码,覆盖了gtest的常见用法,sample的代码位于以下文件夹:

gtestsamples

由于gtest的代码库中并没有包含这些sample代码对应的msvc工程文件,所以需要我们自行创建。下面以把sample1的代码跑起来为目的,演示如何用Visual Studio创建一个集成了gtest的命令行工程。

用Visual Studio创建工程

Step1 创建名为samples的Win32 Console Application

Step2 在Application Settings中去掉Precompiled header勾选项

Step3 删掉向导自动生成的这些文件,保存后Close Solution。

Step4 向导自动生成的对我们有用的是以下三个文件:

  1. samples.sln
  2. samples.vcxproj
  3. samples.vcxproj.filters

把它们拷贝到gtestmsvc文件夹下,然后再重新打开samples.sln。

Step5 把gtest代码库下的这两个文件加入到工程中:

  1. gtest-all.cc
  2. gtest_main.cc

Step6 左侧目录树选择“Configuration Properties > C/C++ > General”,在右侧“Additional Include Directories”中添加Include路径,分别指向gtest的根目录和include目录:

Step7 再次确认一下没有使用Precompiled header

Step8 至此,我们已经创建好了一个集成了gtest的工程,它是一个命令行程序,编译之后运行效果如下:

添加测试和被测试代码

在上面这个工程中,加入sample1的测试和被测试代码,即形成了sample1的单元测试工程:

编译之后运行,即可看到测试用例的执行结果:

关于Precompiled header

上面的这个例子,从一开始创建工程就关闭了Precompiled header,这样做主要有以下两方面原因:

  1. gtest本身的代码是不需要使用预编译头的;
  2. sample1的测试代码也是不需要使用预编译头的。

但这种做法不一定适合于其它测试工程,比如说,当测试代码中包含了MFC派生类的时候,这种情况下的做法是打开整个工程的Precompiled header,单独关闭gtest-all.cc和gtest-main.cc的Precompiled header:

一句话小结就是,根据具体的测试代码来设置Precompiled header。


系列文章索引:http://www.cnblogs.com/duxiuxing/p/4270836.html

原文地址:https://www.cnblogs.com/duxiuxing/p/4272343.html