2012-09-22 185 views
4

經過一些嚴重的挫折和頭痛之後,我設法將單元測試添加到現有項目。問題是,測試只能在50%的時間內執行。我有一個測試方法,裏面有一個STFail宏,當我運行測試時,它會按我的預期失敗。然後,我再次運行測試,而不觸及任何代碼/設置,並且它會通過測試夾具中的斷點。發生這種情況時,控制檯輸出此輸出:單元測試失敗,然後不要

無法找到位於... octest的測試包的可執行文件。

我有一個谷歌,但似乎並不多/這個確切的問題,關於這個問題的討論,其他任何人會在我的頭上。如果有人能夠解釋這個問題,那將非常感激。

謝謝。

+0

我不認爲這個問題將無法解決沒有一個可重複的例子。你可以從你的單元測試中刪除多餘的代碼,獲得它,以便發生同樣的問題,併發布代碼? –

+0

嗨大衛。真的沒有太多要發佈。在這個階段,它是一個SenTestCase類的空子類,帶有一個方法和一個STFail宏。我甚至還沒有開始把它連接到應用程序代碼。我可以嘗試刪除應用程序代碼並上傳項目文件(如果可能的話),如果這有什麼用處的話? – Gravedigga

+0

如果它足夠小,您可以(也應該)將它放在帖子中(使用'{}'按鈕縮進每行四個字符)。但是,如果你能把它弄到像<100行的東西。這樣,如果由於某些設置錯誤而導致失敗,人們將能夠看到並告訴你 –

回答

3

我把你的新項目和轉載問題。有許多的問題,以及一個未知:

測試目標的構建階段:

  • 目標相關性:指定TestApp,使主要目標總是先建。
  • 編譯來源:不包括任何主要來源。只包含TestAppUnitTests.mm
  • Link Binary With Libraries:唯一需要的是SenTestingKit.framework。我們可以投入Foundation和UIKit以獲得更好的效果。
  • 複製包資源:應該沒有。 (稍後,您可能需要特定的測試資源。)測試目標

構建設置:

  • 捆綁裝載機應$(BUILT_PRODUCTS_DIR)/TestApp.app/TestApp
  • 測試主機應$(BUNDLE_LOADER)

主要目標方案:

  • 測試 - >信息應指定測試目標

但是即使我做的所有這些改變,你的項目仍然有異常行爲。模擬器有時會獲取名爲的應用程序版本,字面上爲$ {PRODUCT_NAME}。即使調試應用程序有時也會在日誌導航器中顯示「Debug $ {EXECUTABLE_NAME}」。所以別的東西是錯誤的,我不知道是什麼。

最好的解決方案是從頭創建一個新項目,指定「包含單元測試」。我已經驗證了這一點。

+0

好的,感謝指針喬恩。聽起來像創建一個新項目可能會更容易。還是要謝謝你的幫助。 – Gravedigga

+0

當我在我的Xcode項目中重構目標名稱時,Cocoapods搞砸了。這幫助我解決了測試目標。謝謝! – Hlung

+0

關於軟件包設置和測試主機,您應該看到: * build/debug-iphoneos/AppName.app/AppName * 這是一個有效的路徑。 – OhadM