2010-09-10 117 views
7

最近升級到XCode 3.2.4和iOS SDK 4.1導致我的單元測試不再適用於我的iOS項目。該項目目前只在模擬器上運行,而不是真正的硬件。在XCode 3.2.4升級後執行邏輯測試的問題

我試着與一個虛擬的測試情況下,新的空白項目補充說,總是會過去,但它也不管用,讓我這樣的結果:

處理命令輸出時發生內部錯誤:
- [XCBuildLogCommandInvocationSection setTestsPassedString:]:無法識別的選擇發送到實例0x20176e320
處理命令輸出時發生內部錯誤:
- [XCBuildLogCommandInvocationSectionRecorder結束標記]:無法識別的選擇發送到實例0x201257de0

是否有其他人使用XCode 3.2.4和iOS SDK 4.1測試用例存在問題?

回答

4

這似乎是迴歸,部分報告代碼不尊重時區問題。輸出在開始之前被標記爲結束,因此變得非常困惑和窒息。

我在Google上發現的一種解決方法是更改​​目標的運行腳本階段。

變化

"${SYSTEM_DEVELOPER_DIR}/Tools/RunUnitTests" 

"${SYSTEM_DEVELOPER_DIR}/Tools/RunUnitTests" 1> /tmp/RunUnitTests.out 

它的工作輪的問題,而不是解決它,但不工作。

+0

現在運行良好,謝謝! – leinz 2010-09-18 11:35:44

+0

這是否提供任何指示測試是否失敗?因爲如果不是的話,你可能完全禁用單元測試目標(所以你知道它沒有運行),而不是讓它運行並隱藏結果(所以你可能會忘記,並認爲它正在通過) – benzado 2010-09-18 18:43:21

+0

據我所知它只是將輸出轉儲到構建窗口中,而沒有應該發生的花式嵌套,所以您仍然可以看到通過的測試和/或錯誤的列表。它不會隱藏結果,甚至不會格式化它們。 – creednmd 2010-09-20 08:32:15

2

我建議解決您的問題是考慮使用GHUnit。它適用於現有的SenTestCase類,但它也有一組測試類/斷言。你只需設置一個新的目標並指向他們的駕駛員級別。您將得到一個功能齊全的測試工具,可以在模擬器和真實設備上運行測試。我發現它比設置測試包和管理所有這些要容易得多,也更加穩健。

http://github.com/gabriel/gh-unit

+1

欣賞響應,但它不能解決問題。我遇到了同樣的錯誤,並想知道如何解決它。 – Patrick 2010-09-11 22:46:09

+0

看起來它與日誌代碼有關。我不知道如何解決這個問題。你可能只需要禁用它作爲你的構建的一部分,手動運行單元測試:( – logancautrell 2010-09-12 05:59:17

+0

不完全是我的問題的答案,但很好,但現在知道GHUnit。 – leinz 2010-09-18 11:37:33

4

爲問題的解決方法是張貼在蘋果的開發者論壇。它在我的項目中工作正常。訪問網站並嘗試。

+0

聲音很好,除了這需要是一個 – leinz 2010-09-18 09:39:10

+0

源代碼發佈於GitHub。 http://gist.github.com/586296 – yusami 2010-09-19 21:35:26