Win32平台如何编译使用Google test编写的单元测试?

Win32平台如何编译单元测试的代码?(readme文件并没有明确指出,我们需要自行配置)

 

1. 单元测试从何处运行?

 

利用Google test编写单元测试,我们只需要使用其提供的宏来定义测试,不需像CppUnit那样还要编写运行测试的代码,从Linux平台如何编译使用Google test写的单元测试?也可以看出,我们并没有编写main函数,那么,利用google test编写的单元测试,从何处开始执行?

main函数位于gtest_main.cc文件中,如下。

#include

#include

 

int main(int argc, char **argv) {

  std::cout << "Running main() from gtest_main.cc/n";

 

  testing::InitGoogleTest(&argc, argv);

  return RUN_ALL_TESTS();

}

查看google test自带的sample代码,我们发现每个sample的单元测试代码都没有单独编写main函数,因此,要想运行自己编写的单元测试,需要将gtest-all.ccgtest_main.cc编译到工程并连接,从Linux平台如何编译使用Google test写的单元测试?中的makefile文件也能看出。当然,我们也可以不是用google test提供的main函数,而自己改写。

 

2. Win32平台如何配置?

 

综上分析,在Win32平台,要编译、运行自己编写的单元测试,要进行以下设置(vs2005为例)

 

假设环境变量

GTEST_ROOT=E:/opensource/gtest-1.5.0

 

2.1 IDE中编译

 

Step1. 设置vs2005

Tools->options->projects and solutions->VC++ directories

->Include files: 添加$(GTEST_ROOT)/include$(GTEST_ROOT)

->Library files: 添加$(GTEST_ROOT)/lib

此处的Library files也可以不添加$(GTEST_ROOT)/lib

 

Step2. gtest_main.ccgtest-all.cc添加到工程

 

Step3. 编译使用google test编写的单元测试

 

2.2 通过命令行编译

 

(1) 配置

 

通过命令行编译,需要设置环境变量INCLUDE,在其后添加%GTEST_ROOT%;%GTEST_ROOT%/include

 

例如,笔者机器上环境变量INCLUDE的值为:

%VCInstallDir%/ATLMFC/INCLUDE;%VCInstallDir%/INCLUDE;%VCInstallDir%/PlatformSDK/include;%VSInstallDir%/SDK/v2.0/include;%ACE_ROOT%;%BOOST_1_40_ROOT%;%CPPUNIT_ROOT%/include;%GTEST_ROOT%;%GTEST_ROOT%/include

 

(2) 命令

 

环境变量INCLUDE配置后,该如何写命令呢?

 

Linux平台如何编译使用Google test写的单元测试?假设要测试的代码在sample.cpp文件中,编写的单元测试代码在test.cpp中,要编译该单元测试,命令行如下:

cl /wd 4530 /nologo test.cpp sample.cpp %GTEST_ROOT%/src/gtest_main.cc %GTEST_ROOT%/src/gtest-all.cc

 

当然,我们可以写一个bat文件自动执行,如make.bat,内容如下。

@echo off

 

echo start to compile all examples

echo.

 

cl /wd 4530 /nologo test.cpp sample.cpp %GTEST_ROOT%/src/gtest_main.cc %GTEST_ROOT%/src/gtest-all.cc

echo.

 

del *.obj

 

echo done. bye.

pause

相关推荐