2009-01-05 81 views
6

爲了進行單元測試,我想在Xcode中創建一個包含所有發佈應用程序文件的iPhone項目目標,以及一些包含對UI單元測試有用的代碼的附加文件。你能在Xcode中創建一個「超集」目標嗎?

我可以通過複製原來的應用程序目標來做到這一點;然而,問題在於,每次我將新的源文件添加到應用程序目標時,我都需要將其添加到UnitTestUI目標。這不是什麼大問題,只是不方便總是記得向兩個目標添加文件。

是否有一些方法可以設置依賴關係,以便每個添加到原始應用目標的文件也自動添加單元測試目標?

回答

4

在Xcode中,您可以創建彼此具有直接依賴關係的目標。根據設置的簡單性或複雜程度,添加新目標時,有許多非產品建築目標可以幫助您在其他類別中提供幫助。爲直接依賴主項目目標而創建運行單元測試的特定目標是非常常見的,並且由Apple和許多博客記錄。

但是,在您的情況下,您可能需要對新的UI測試目標進行大量調整,但一旦設置完成後,維護將非常容易。不知道您的具體情況,這是不可能給你一個一步一步的答案,但這裏的一般準則(調整到適合你的情況):

  1. 因爲大多數的創建原始目標的拷貝你的設置將是相同的。
  2. 選擇新的目標,並打開檢查器(⌘I)
  3. 直接依賴,點擊+按鈕,然後選擇您的主要目標。
  4. 根據需要設置新目標,附加文檔/源/規則或其他。

如果你喜歡拖動周圍的東西掉落,你還可以將你原來的目標(從目標三角形下)到新的目標,它會自動設置的依賴。

現在,選擇您的測試目標作爲活動目標,並始終使用這些規則進行構建。另外,如果您在主目標中添加/更改源代碼,那麼在構建測試目標時它將被正確地重建......無需記住也將源文件添加到測試目標。我建議花些時間閱讀各種Xcode文檔,並使用大量可用的目標模板......從長遠來看,這確實有助於使產品更加高效。如果你知道如何,即使對於非常大型或複雜的項目,Xcode中也可以很容易地完成很多漂亮的事情。

0

不,沒有。您希望單元測試目標中的每個文件都有特定的原因嗎?這將包括main.m和所有你沒有測試的類(比如你的視圖類)。事實上,如果main.m包含在你的單元測試中,那麼你的單元測試如何正確運行呢?

+0

我應該澄清一下,這個目標是爲了測試依賴於整個應用上下文可用的代碼。 (比如一些UIViewControllers)。因此它更像是一個UI測試框架,並且旨在涵蓋其他「無頭」單元測試無法涵蓋的內容。 – thrusty 2009-01-05 02:51:48

+0

當然,目標可以是彼此的直接依賴關係。 – 2009-01-05 09:47:36

0

我通過將我的大部分應用程序構建爲靜態庫(它與應用程序和單元測試目標鏈接)來解決問題。在我的項目

目標看起來像:

  • libMyApp
    • 編譯.m文件
  • MyApp.app
    • libMyApp(依賴)
    • 鏈接與庫: libMyApp.a
  • UITest.app
    • libMyApp(依賴)
    • 鏈接與庫:libMyApp.a

這樣我可以.m文件僅添加到 「libMyApp」 的目標,讓他們在應用程序和測試中都可用,而且甚至不必重新編譯。

唯一的問題是靜態庫似乎不支持Objective-C類別,所以我仍然必須將它們分別添加到每個目標。

相關問題