它没有记录在网站上,人们似乎在设置框架时遇到了问题.有人可以逐步介绍示例项目设置.
(这些指令使测试框架适用于Debug配置.将相同的进程应用于Release配置应该是非常简单的.)
获取Google C++测试框架
下载最新的gtest框架
解压缩到 C:\gtest
构建框架库
C:\gtest\msvc\gtest.sln
在Visual Studio中打开
将配置设置为"调试"
构建解决方案
创建和配置您的测试项目
创建一个新的解决方案,然后选择模板Visual C++> Win32> Win32控制台应用程序
右键单击新创建的项目,然后选择"属性"
将配置更改为调试.
配置属性> C/C++>常规>其他包含目录:添加 C:\gtest\include
配置属性> C/C++>代码生成>运行时库:如果您的代码链接到运行时DLL,请选择多线程调试DLL(/ MDd).如果没有,请选择多线程调试(/ MTd).
配置属性>链接器>常规>其他库目录:添加C:\gtest\msvc\gtest\Debug
或C:\gtest\msvc\gtest-md\Debug
,取决于gtestd.lib的位置
配置属性>链接器>输入>附加依赖项:添加 gtestd.lib
验证一切正常
在包含该main()
功能的Test Project中打开cpp .
粘贴以下代码:
#include "stdafx.h" #include#include "gtest/gtest.h" TEST(sample_test_case, sample_test) { EXPECT_EQ(1, 1); } int main(int argc, char** argv) { testing::InitGoogleTest(&argc, argv); RUN_ALL_TESTS(); std::getchar(); // keep console window open until Return keystroke }
调试>开始调试
如果一切正常,您应该会看到控制台窗口出现并显示单元测试结果.
Arlaharen说的基本上是正确的,除了他遗漏了解释你的链接器错误的部分.首先,您需要在没有 CRT作为运行时库的情况下构建应用程序.无论如何,您应该始终这样做,因为它确实简化了应用程序的分发.如果你不这样做,那么你的所有用户都需要安装Visual C++运行时库,那些不需要的人会抱怨他们的系统中缺少神秘的DLL ...需要额外的几百千字节来链接CRT静态地,你以后在支持中省去了很多头痛(相信我这一点 - 我已经很难学到了!).
无论如何,要执行此操作,您将转到目标的属性 - > C/C++ - >代码生成 - >运行时库,并且需要将其设置为"多线程"以用于发布版本和"多线程调试"你的Debug构建.
由于gtest库是以相同的方式构建的,因此您需要确保链接到它的正确版本,否则链接器将引入运行时库的另一个副本,这是您看到的错误(顺便说一下,这个如果你使用MFC,不应该有所作为).您需要将gtest构建为Debug和Release模式并保留两个副本.然后,在Release版本中链接gtest.lib/gtest_main.lib,在Debug版本中链接gtestd.lib/gtest_maind.lib.
此外,您需要确保您的应用程序指向存储gtest头文件的目录(在属性 - > C/C++ - >常规 - >其他包含目录中),但如果您遇到链接器错误,我假设您已经设法使这部分正确,否则您将有更多的编译器错误首先处理.
我做了一个关于设置的视频教程:http: //www.youtube.com/watch?v = mzSzwQOmMRs
如果您不想为测试编写自己的main(),可以使用gtest_main.lib中定义的main()函数,但是在VS2012中会出现链接器错误"必须定义入口点".在您的测试项目中将ProjectProperties-> Linker-> System-> SubSystem设置为"Console",因为这会强制VS2012查找名为"main()"的入口点,并在gtest_main.lib中找到它(如果已链接)它正确).