2009-08-23 119 views
5

我還不是集成開發環境的粉絲,但我試圖克服偏見並學習Xcode。 (Eclipse/CDT是下一個;我無法在去年嘗試去爲我工作,但這是一個單獨的問題。)如何在Xcode中組織單元測試庫項目?

我在一個新項目中寫了一些新代碼, )一個小型圖書館。我也想單元測試它。我如何向Xcode解釋我正在構建(共享)庫,但是我也想在測試程序中使用它,從不在共享庫中的獨立源編譯?

的源代碼:

  • atom.c
  • atom.h
  • 測試atom.c

生成的文件:

  • libatom.dylib
  • 測試原子

我已將atom.catom.h編譯到庫中。我只是不確定如何組織事情,以便我還可以建立test-atom與圖書館鏈接。 我假設,當我有了排序,添加test-atom.c的測試支持代碼庫會相對直接 - 即使它不在Xcode控制之下。

FWIW,我主要是用C工作,而不是目的C.

回答

4

您的項目需要兩個目標; Xcode中的目標產生一個產品這是一個庫,可執行文件或其他輸出。

因此,您的目標是生成libatom.dylib,我懷疑您已經設置了該目標,另一個命令行可執行目標爲生成test-atom可執行文件,供您運行以測試您的庫。

一旦你添加了test-atom目標,你應該得到的信息對test-atom.clibatom.dylib目標刪除其會員,並將其添加爲新的目標test-atom的成員。文件的目標成員身份決定了構建目標是否會嘗試編譯/複製/鏈接該文件。 (目標確實與文件什麼取決於什麼構建階段將其添加當它是由一個成員。)

你也應該獲取信息對您的產品組libatom.dylib條目,使成員test-atom目標也是如此。這將導致test-atom可執行文件鏈接到libatom.dylib

最後,獲取信息對test-atom目標(而不是產品),並在常規選項卡中加入了對libatom.dylib目標一依賴。這將確保構建test-atom目標將始終首先構建libatom.dylib目標。

2

編輯:見Automated Unit Testing with Xcode 3 and Objective-C(我原來掛到,在下面留言指出文章的最新版本)。另請參閱What is the best way to unit test Objective-C code?雖然您明確尚未使用Obj-C,但設置新目標的基本知識對於C代碼將是相同的,而OCUnit特定的東西非常具有代表性,可以說明IDE中的單元測試的工作原理。

+4

請不要指出人們「用OCUnit測試驅動你的代碼」 - 它已經過時了,並且自發布幾個月後已經過時了。首先,它告訴人們下載OCUnit,但自Xcode 2.1發佈以來,OCDC自2005年WWDC以來一直包含在Xcode中。請指出人們使用Xcode 3和Objective-C進行「自動單元測試」,而不是使用http://developer.apple.com/mac/articles/tools/unittestingwithxcode3.html。 – 2009-08-24 00:10:04

+0

感謝您指向新文章! – 2009-08-24 06:01:37