Google开源C++单元测试框架Google Test(gtest)在C++Builder(xe5)下的使用-1

google的开源测试框架gtest在C++Builder(xe5)下怎么玩呢? 网上大多数都是在Visual studio下运行,C++Builder(xe5)下涉及很少,今天我们就来详细说说。

就目前来说,gtest的最新版本是:gtest-1.7.0   不过很可惜我在xe5下未能编译成功,也暂时未能找到原因,但gtest-1.6.0是可以的,下面进行详谈。

首先去官网(https://code.google.com/p/googletest/)下载,也可以在这里下载:  http://download.csdn.net/detail/johnnyhu90/8053765 ,解压之后,可以看到一个codegear的文件夹,这里面就是gtest用于C++ builder(xe5)的一些工程文件, 在编译器中打开这些工程文件如下:

1、 编译生成gtest.lib、gtest_main.lib两个文

File->Open Project->gtest.groupproj->"打开"如下:

有三个工程文件gtest.lib、gtest_main.lib、gtest_unittest.exe三个工程文件,分别右击选中gtest.lib->build就可以编译成gtest.lib,同理编译gtest_main.lib。生成的gtest.lib、gtest_main.lib就是我们所需要的。

2 在Test工程中添加gTest相关文件:

File->New->Other->选中Console Application->OK->Target FrameWork中选中"visual component library"则我们创建了带有C++builder(xe5)可视化组件库的控制台工程,那么接下来就添加gTest相关的文件了,在解压的gtest-1.6.0中选中include文件夹,src文件夹将其添加到当前工程中,再新建文件夹lib,将生成的gtest.lib、gtest_main.lib两个文件添加到其中,在将codegear中的gtest_all.cc和gtest_link.cc添加到当前文件中,结构如下:

Google开源C++单元测试框架Google Test(gtest)在C++Builder(xe5)下的使用-1_第1张图片

3. 添加相应的路径和源文件:

假设我们创建了一个叫myGoogleTest的工程文件,那么我们在myGoogleTest工程文件中要用到相应的gtest框架中的的相关函数,那么就要正确的添加其路径,好让程序的在build的时候能够链接的到;

(1)添加源文件:gtest_all.cc和gtest_link.cc

单击project->Add to Project->选中gtest_all.cc和gtest_link.cc->"打开“将他们添加到现有工程中;

(2)添加include路径:

单击Project->Option->include path 添加include文件夹路径; 

(3)添加lib文件及路径:

a、单击project->Add to Project->lib文件夹->选中gtest.lib、gtest_main.lib->"打开“将他们添加到现有工程中;

注:gtest_main.lib可选,如果创建的是控制台工程(Console Application)不带有可视化控件(visual component library)。我们可以不用写main函数,简化步骤,这里由于创建的是可视化控件库的工程,所以gtest_main.lib用不到

b、单击Project->Option->Library path 添加lib夹路径文件夹路径; 

注:src文件夹直接在源文件中引用如:”#include "src/gtest-all.cc"“不需要手动添加。

接下来,我们在带有main函数是文件中添加如下代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
#include <vcl.h>
#include <windows.h>

#pragma hdrstop
#pragma argsused

#include <tchar.h>

#include <stdio.h>

#include  "gtest/gtest.h"

// 简单测试用例1
int Foo( int a,  int 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(FooTest, HandleNoneZeroInput)
 {
     EXPECT_EQ( 2, Foo( 410));
     EXPECT_EQ( 6, Foo( 3018));
 }


  // 简单测试用例2
 AnsiString getName()
 {
      return  "HaHa";
 }

 TEST(getName, HandleNoneZeroInput)
 {
     EXPECT_EQ( "HaHa", getName());
     EXPECT_EQ( "HaHA", getName());
 }

int _tmain( int argc, _TCHAR* argv[])
{
    testing::InitGoogleTest(&argc, argv);
     return RUN_ALL_TESTS();
}
Build该工程顺利通过,我们在cmd下运行相应的exe文件结果如下:

Google开源C++单元测试框架Google Test(gtest)在C++Builder(xe5)下的使用-1_第2张图片

至此,本例简单测试用例完成!

注:本测试用例基于C++builder(xe5), 测试用例及gtest-1.6.0、gtest-1.7.0见链接:http://download.csdn.net/detail/johnnyhu90/8053765


你可能感兴趣的:(Google开源C++单元测试框架Google Test(gtest)在C++Builder(xe5)下的使用-1)