当前位置:  开发笔记 > 编程语言 > 正文

如何在Visual Studio 2005上设置Google C++测试框架(gtest)

如何解决《如何在VisualStudio2005上设置GoogleC++测试框架(gtest)》经验,为你挑选了4个好方法。

它没有记录在网站上,人们似乎在设置框架时遇到了问题.有人可以逐步介绍示例项目设置.



1> mtlynch..:

(这些指令使测试框架适用于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\DebugC:\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
    }
    

    调试>开始调试

如果一切正常,您应该会看到控制台窗口出现并显示单元测试结果.


那是一个很棒的指南!我能够让球滚动,但我会在那里添加一个注释:测试项目和gtest库必须使用相同的代码生成选项构建,两者都是/ MDd或两者都是/ MTd,否则会是一堆链接错误.

2> Nik Reiman..:

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++ - >常规 - >其他包含目录中),但如果您遇到链接器错误,我假设您已经设法使这部分正确,否则您将有更多的编译器错误首先处理.



3> Armando..:

我做了一个关于设置的视频教程:http: //www.youtube.com/watch?v = mzSzwQOmMRs



4> 小智..:

如果您不想为测试编写自己的main(),可以使用gtest_main.lib中定义的main()函数,但是在VS2012中会出现链接器错误"必须定义入口点".在您的测试项目中将ProjectProperties-> Linker-> System-> SubSystem设置为"Console",因为这会强制VS2012查找名为"main()"的入口点,并在gtest_main.lib中找到它(如果已链接)它正确).

推荐阅读
家具销售_903
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有