本指南將介紹如何在 Mac OS X 上的 Xcode 項目中使用谷歌測試框架。本教程開始快速解釋為有經驗的用戶做什么。快速起步后指南 》 都提供了進一步的解釋每個步驟。
快速入門
這是快速指南在 Xcode 項目中使用谷歌測試。
- 使用此命令在網站下載源代碼: svn 簽出 http://googletest.googlecode.com/svn/trunk/ googletest 只讀
- 開放中的gtest.xcodeproj googletest-讀-只/xcode/目錄并生成 gtest.framework。
- 名為"UnitTests"類似 Xcode 項目中創建一個新的"殼工具"目標
- 將 gtest.framework 添加到您的項目,并將其添加到"UnitTests"的"鏈接二進制與圖書館"生成階段
- 添加您的單元測試的源代碼以"UnitTests"的"編譯來源"生成階段
- 編輯"UnitTests"可執行文件并添加環境變量命名為"DYLD_FRAMEWORK_PATH"值等于框架包含 gtest.framework 相對于已編譯的可執行文件的路徑。
- 生成并轉
以下各節進一步解釋每個深度,更詳細地描述了如何完成它包括一些變化在上面列出的步驟。獲取源
目前,此處討論的 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 開發環境很好。