Welcome 微信登录

首页 / 操作系统 / Linux / 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.cc和gtest_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. 设置vs2005Tools->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.cc和gtest-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 examplesecho. cl /wd 4530 /nologo test.cpp sample.cpp %GTEST_ROOT%/src/gtest_main.cc %GTEST_ROOT%/src/gtest-all.ccecho. del *.obj echo done. bye.pause