posts - 319, comments - 22, trackbacks - 0, articles - 11
  C++博客 :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理

搜索 
 对于  
V1_6_XcodeGuide  
在 Mac OS X 上 Xcode 使用谷歌测试框架指南 
部署阶段
zhanyong...@gmail.com更新的2011 年 4 月 18 日

本指南将介绍如何在 Mac OS X 上的 Xcode 项目中使用谷歌测试框架。本教程开始快速解释为有经验的用户做什么。快速起步后指南 》 都提供了进一步的解释每个步骤。

快速入门

这是快速指南在 Xcode 项目中使用谷歌测试。

  1. 使用此命令在网站下载源代码: svn 签出 http://googletest.googlecode.com/svn/trunk/ googletest 只读
  2. 开放中的gtest.xcodeproj googletest-读-只/xcode/目录并生成 gtest.framework。
  3. 名为"UnitTests"类似 Xcode 项目中创建一个新的"壳工具"目标
  4. 将 gtest.framework 添加到您的项目,并将其添加到"UnitTests"的"链接二进制与图书馆"生成阶段
  5. 添加您的单元测试的源代码以"UnitTests"的"编译来源"生成阶段
  6. 编辑"UnitTests"可执行文件并添加环境变量命名为"DYLD_FRAMEWORK_PATH"值等于框架包含 gtest.framework 相对于已编译的可执行文件的路径。
  7. 生成并转
以下各节进一步解释每个深度,更详细地描述了如何完成它包括一些变化在上面列出的步骤。

获取源

目前,此处讨论的 gtest.framework 标记的谷歌测试版本中不可用,只有在树干。解释在谷歌测试网站,你可以得到代码从匿名 SVN 使用此命令:

svn checkout http://googletest.googlecode.com/svn/trunk/ googletest-read-only

或者,如果您正在使用颠覆您自己的代码库中,可以添加 Google Test 作为外部相关性颠覆资料库。按照这种方法,签出 svn 存储库,所有人都还将收到一份 Google 测试 (特定的版本,如果您愿意) 而不必显式签出。这一组的组成项目简单并减少复制到存储库中的代码。

若要使用svn:externals,决定要将具有外部源驻留。因为你想要分支的一部分进行发布时,您可以选择把树干内, 外部源。然而,把它称为third-party/googletest/1.0.1类似的版本标记的目录中的树干以外,是另一种选择。一旦建立了位置,则使用svn propedit svn:externals _directory_ svn:externals 属性设置对存储库中的目录。此目录不能包含的代码,但它的版本控制的父目录。

命令svn propedit将会出现你颠覆编辑器中,使编辑更简单长,(可能多行) 的属性。这同一种方法可用于检查出标记的分支,通过使用相应的 URL (例如http://googletest.googlecode.com/svn/tags/release-1.0.1)。另外,svn:externals 属性允许的特定修订版的树干与规范-r_ # # _选项 (例如的外部对象/src/googletest-r60 http://googletest.googlecode.com/svn/trunk).

这里是一个项目 (阅读通过svn propget) 树干上使用 svn:externals 属性的示例。此值将签出到谷歌测试的副本主干/外部对象/src/googletest/目录。

[Computer:svn] user$ svn propget svn:externals trunk
externals
/src/googletest http://googletest.googlecode.com/svn/trunk

向项目中添加框架

下一步是建立并将 gtest.framework 添加到您自己的项目。本指南描述了下面的两种常用方法。

  • 选项 1 ---将谷歌测试添加到您自己的项目,最简单的方法就是打开 gtest.xcodeproj (xcode 中发现谷歌测试树干的目录) 和手动构建框架。然后,将生成的框架添加到您的项目使用"添加-> 现有框架 … …"从上下文菜单或"项目-> 添加..."从主菜单。Gtest.framework 是可重定位,并包含页眉和您需要进行测试的目标代码。此方法要求重建每次您升级谷歌测试您的项目中。
  • 选项 2 ---如果您打算将为生的谷歌测试树干,其最新的功能纳入您的单元测试 (或自己是谷歌测试开发人员)。你要重建框架,每次更新源。要这样做,您需要将 gtest.xcodeproj 文件,框架本身,添加到您自己 Xcode 项目。然后,从生成产品项目的三角形发现,您可以找到 gtest.framework,可以添加到你的目标 (以下讨论)。

使测试目标

要开始编写测试,使新的"壳工具"目标。此目标模板是 BSD、 可可、 或碳下可用。添加您的单元测试的目标"编译来源"生成阶段的源代码。

接下来,你要在两种不同方法中添加 gtest.framework,取决于哪个选项您选择以上。

  • 选项 1 ---在编译期间,Xcode 将需要知道您要链接对 gtest.framework。将 gtest.framework 添加到您的测试目标的"链接二进制与图书馆"生成阶段。这将包括谷歌测试头在标题搜索路径中,并将告诉链接器在哪里可以找到的库。
  • 选项 2 ---如果您工作的树干,你也要将 gtest.framework 添加到您的测试目标的你"链接二进制与图书馆"生成阶段。此外,你要将 gtest.framework 作为依赖项添加到你的单元测试目标。这种方式,Xcode 将确保该 gtest.framework 是到目前为止,每次您的构建你的目标。最后,如果你不使用谷歌测试共享生成目录,你得将 gtest.framework 复制到您自己生成产品目录,使用"运行脚本"生成阶段。

设置可执行文件运行环境

可执行单元测试是壳的工具,因为它没有一捆,内容/框架的目录,在其中放置 gtest.framework。相反,必须在运行时告诉动态链接器搜索中的另一个位置的框架。这可以通过在"编辑活动的可执行文件..."中设置的"DYLD_FRAMEWORK_PATH"的环境变量参数选项卡,在"设置环境变量:"。此值的路径是目录的包含 gtest.framework 的路径 (相对或绝对)。

如果您还没有设置 DYLD_FRAMEWORK_PATH,正确,可能会得到这样一条消息:

[Session started at 2008-08-15 06:23:57 -0600.]
  dyld
: Library not loaded: @loader_path/../Frameworks/gtest.framework/Versions/A/gtest
   
Referenced from: /Users/username/Documents/Sandbox/gtestSample/build/Debug/WidgetFrameworkTest
   
Reason: image not found

要正确这个问题,必须包含可执行文件中指定的目录"从引用:"上述错误消息中的值。然后,在此位置的终端,发现包含 gtest.framework 的目录的相对路径。这就是你需要设置为 DYLD_FRAMEWORK_PATH 的值。

生成并转

现在,当您单击"生成走",将会执行测试。倾倒出这样的事:

[Session started at 2008-08-06 06:36:13 -0600.]
[==========] Running 2 tests from 1 test case.
[----------] Global test environment set-up.
[----------] 2 tests from WidgetInitializerTest
[ RUN      ] WidgetInitializerTest.TestConstructor
[       OK ] WidgetInitializerTest.TestConstructor
[ RUN      ] WidgetInitializerTest.TestConversion
[       OK ] WidgetInitializerTest.TestConversion
[----------] Global test environment tear-down
[==========] 2 tests from 1 test case ran.
[  PASSED  ] 2 tests.

The Debugger has exited with status 0.  

摘要

单元测试是有价值的方式,确保你的数据模型保持有效,即使在快速发展过程中或重构。谷歌测试框架是伟大单元测试框架,C 和 c + + 于一体的与 Xcode 开发环境很好。


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理