2012-06-08 99 views
0

我是xcode和objective-c的新手。我還決定爲我的項目添加單元(邏輯)測試。測試工作正常(使用OCUnit和SenTestingKit)。我不明白的是build for testing的工作原理。讓我來解釋一下..xcode 4.3單元測試

我寫了一個簡單的單元測試,用來檢查空數組 - 使用

STAssertTrue([array count] ==0, @"Should have an empty array, but it is not"); 

這將構建罰款和測試通過。

現在,如果我將其從0更改爲1,則構建失敗。它對我來說沒有意義,爲什麼構建失敗 - 代碼沒有任何不正確的。在我看來,構建實際上正在運行代碼,斷言聲明。

如果方法是用一個元素返回數組,那麼如何通過代碼來確定方法中的問題?在這個簡單的例子中,對於這個問題很明顯,但是如果要測試的方法有更多的深度,則需要通過它來糾正問題。像這樣運行單元測試似乎並不容易,除非我完全缺少某些東西。

我的問題是:如何單步測試失敗的單元測試?

+0

你能說出你更明確的步驟嗎?我不清楚問題是什麼。你覺得你的單元測試失敗會導致你的構建失敗?情況並非如此,我只是證實它不在我自己的項目中。 – Dov

+0

有可能我設置了一些不正確的東西,希望能在這裏找到解決的辦法。問題是,如果單元測試工作正常並且構建成功,那麼爲什麼構建失敗,如果在STAssertEqual(x == 2)中更改了簡單的內容; //其中x是3.它應該仍然沒有問題,開發人員應該能夠遍歷代碼,看看爲什麼x是3並且解決了問題,但事實並非如此。因此,當代碼更復雜時,構建失敗並且無法執行代碼。難道我做錯了什麼?我的期望是否被關閉? –

+0

對於您發佈其他人可以打開的示例項目可能會有所幫助,或者爲其他人提供具體說明以便輕鬆地重新創建演示項目。 – Dov

回答

1

如果您不想破壞測試導致構建失敗,則需要關閉測試後構建設置在您的項目中。如果將來由於測試您的構建失敗,您可以通過執行它們(產品 - >測試)並設置斷點來調試測試用例,就像調試其他代碼一樣。 Xcode的情況並非總是如此,但它與4.3一樣,正如你所說的那樣。

您還會問「構建測試」的含義。這個問題涵蓋了同樣的理由:Xcode 4 terms "Build for testing/Build for running/build for profiling/build for archiving"

+0

設置斷點不起作用 - 代碼未被執行,因此斷點不會被命中。如果它建立,我可以運行測試並打斷點。 –

+0

答覆更新以反映評論中得出的結論。 – Dov