window10搭建GTEST测试框架

window10搭建GTEST测试框架

  • 我们一起来搭框架吧~
    • 电脑配置
    • 框架源码传送门
    • 解压代码
    • 打开解决方案居然有四个工程!内心崩溃
    • 新建工程,导入lib文件和头文件
    • 编写测试用例,运行框架

我们一起来搭框架吧~

电脑配置

系统版本:window10
系统类型:64位操作系统
编译器:Visual Studio2013

框架源码传送门

下载地址:GTEST源码传送门

解压代码

我们这里首先需要打开msvc文件中的.sln解决方案,这里我用的是gtest.sln
这时候在编译器vs2013里面会跳出来一大推迁移更新文件,只要一顿点继续就好,直到达到你的目的,就是打开这个解决方案,过程不重要~

--build-aux
--cmake
--codegear
--include
--m4
--make
--msvc(这个是我们需要打开的文件夹)
--samples
--scripts
--src
--test
--xcode

打开解决方案居然有四个工程!内心崩溃

打开gtest.sln解决方案方案有以下四个工程:

--gtest
--gtest_main
--gtest_prod_test
--gtest_unittest

注意:我这里搭建的是Debug版本的GTEST环境!!!
(1) 右键gtest工程,列表中点击设置为启动项
(2) 项目–属性–配置(属性页最上面有配置选择项)–选择Debug(如果是release版本就选release哦~)–平台(发现只有win32,内心又一次崩溃)–点击配置管理器–点击项目gtest的平台下拉选项–新建(新建平台选择x64,然后确认)–接下来就是点击本地windows调试器,生成gtestd.lib
(3)同样的步骤,在gtest_main工程中生成gtest_maind.lib
很多博都是直接说gtestd.lib和gtest_maind.lib,这里是需要自己编译生成的~不然msvc文件中没有其他任何文件夹!!
生成的gtestd.lib和gtest_maind.lib的路径为:msvc/x64/Debug(这里可以验证你的版本和平台是否正确)

新建工程,导入lib文件和头文件

这里首先要科普和总结我多这两文件的理解,当然如果你了解的话直接略过~
头文件:头文件里一般包括宏定义, 全局变量, 函数原型声明,头文件是.h形式的文件

lib文件:很多人认为lib为静态库,dll为动态库,这理解并不错,但不全面。lib其实分两种的
第一种, lib是完整的静态库,里面有函数代码本身,在编译时直接将代码加入程序当中,应用程序直接使用
第二种,lib是动态库的导出声明,只包含头部信息。里面只有函数所在的DLL文件和文件中函数位置的入口,代码由运行时加载在进程空间中的DLL提供

dll文件(这里顺道总结一下,方便理解):
DLL(Dynamic Link Library)文件为动态链接库文件,又称“应用程序拓展”,是软件文件类型。在Windows中,许多应用程序并不是一个完整的可执行文件,它们被分割成一些相对独立的动态链接库,即DLL文件,放置于系统中。当我们执行某一个程序时,相应的DLL文件就会被调用。一个应用程序可使用多个DLL文件,一个DLL文件也可能被不同的应用程序使用,这样的DLL文件被称为共享DLL文件。
DLL文件中存放的是各类程序的函数(子过程)实现过程,当程序需要调用函数时需要先载入DLL,然后取得函数的地址,最后进行调用。使用DLL文件的好处是程序不需要在运行之初加载所有代码,只有在程序需要某个函数的时候才从DLL中取出。另外,使用DLL文件还可以减小程序的体积。

好了好了,继续开始搭建~
(1)首先创建一个新的工程,至于名字和位置这个自己决定咯,一般都是project1这样子咯~
(2)打开工程文件所在的位置,有个工程命名的文件夹和解决方案(.sln)
(3)规范一点话,把头文件和lib文件放在工程命名的文件夹下面(这里需要创建两个文件夹,一个为lib,一个为include)
(4)将GTEST源码include/gtest整个文件复制到新工程的include中,将gtestd.lib和gtest_maind.lib复制到新工程中的lib中
(5)项目–配置属性–c/c+±-常规–附加包含目录–编辑–添加工程include路径(考虑到工程的可移植性,可以用右下角的宏定义对路径进行简略)比如$(ProjectDir)/include
(6)项目–配置属性–链接器–常规–链接库依赖项–编辑–添加工程lib路径(这里你可能会遇到没有链接器这个子选项的问题,解决方法:项目–属性–配置属性)–常规–配置类型–选择动态链接库或者应用程序–应用)
(7)项目–配置属性–链接器–输入–附加依赖项–添加gtest_maind.lib和gtestd.lib

编写测试用例,运行框架

创建主函数(main.cpp)

#include "gtest\gtest.h"

int main(int argc, char **argv){
	testing::InitGoogleTest(&argc, argv);
	RUN_ALL_TESTS();
	system("pause");
	return 0;
}

创建test.cpp

#include "gtest\gtest.h"
#include"class.h"

TEST_F(TestCase, test01){
	EXPECT_EQ(1 + 1, 2);
}

创建class.cpp

#include "gtest\gtest.h"
#include"class.h"
using namespace std;

void  TestCase::SetUpTestCase()
{
		cout << "SetUpTestCase" << endl;
}
void  TestCase::TearDownTestCase()
{
		cout << "TearDownTestCase" << endl;
	}
void  TestCase::SetUp()   //TEST跑之前会执行SetUp
{
		cout << "SetUp" << endl;
	}
void  TestCase::TearDown() //TEST跑完之后会执行TearDown
{
		cout << "TearDown" << endl;
	}

创建class.h

#include "gtest\gtest.h"
class  TestCase :public testing::Test
{
public:
	static void SetUpTestCase();
	static void TearDownTestCase();
protected:
	virtual  void SetUp();
	virtual  void TearDown();
};

运行main.cpp,即可看到测试通过的终端窗口,搭建框架大功告成~~

你可能感兴趣的:(自动化,单元测试,c++)