2012-07-18 68 views
1

我剛開始爲我的代碼編寫單元測試用例。 在編寫時,我只是吸收了許多測試用例類正在使用一些通用代碼,並且還需要在類中使用一個公共變量。Ocunit - 創建單獨測試類以在類之間共享代碼

所以我決定創建一個單例類來保存所有這些值。其中這個單身人士課程將繼續與sentesting。

所以這裏我的問題是有可能創建一個單例測試類。 ?

注意:我創建了一個singleton,但它根本不起作用。

回答

1

OCUnit與其他xUnit框架共享相同的體系結構。要運行測試用例,它需要

  1. 實例化一個測試用例對象。 (它通常被稱爲「測試夾具」,其中,固定具有跨幾個試驗中有用的其它的對象的實例變量。)
  2. 呼叫的setUp
  3. 都運行一個特定的測試方法
  4. 呼叫TEARDOWN

爲了共同您想要的變量,將其定義爲伊娃。然後在-setUp中初始化它。如果之後需要明確清理,請在-tearDown中進行。

避免在測試之間共享對象是非常重要的,因爲每個測試都應該具有一致的通過/失敗行爲。共享對象會污染這一點,從而在測試之間創建潛在的依賴關係。由於單身人士是共享對象的常見方式,因此他們通常會針對單元測試策略工作。

對於使用Objective-C在Xcode的單元測試(特別是測試驅動開發)的一步一步的例子,看到http://qualitycoding.org/xcode-tdd/

+0

非常感謝回答,但我有一個假設認爲我打的服務問題在開始時從服務器拉出一些URL,我必須使用這些URL來測試我的其他應用程序服務。在這種情況下,考慮我已經寫在不同的班級。根據你的回答,我必須每次都打服務器來取得網址,而且我必須在每個課程中重新啓動服務器。 ?或者你能否建議我採用這種方法, – nik 2012-07-23 12:03:08

+0

@nik這取決於你想要測試的類型:你想測試你的客戶還是你的服務?對於客戶端測試,我堅持真正的單元測試,根本沒有真正的服務。避免真正的服務呼叫可以保持測試的快速和一致。想想如何改變你的設計以隔離服務。 (TDD通過向後測試設計代碼避免了這些問題,而不是試圖設計測試以適應現有的代碼。) – 2012-07-23 23:52:17

+0

@ jon非常感謝您的回答。 – nik 2012-07-24 09:12:43

0

是的這裏我發現在這裏,我們不能創建一個繼承sentesting的單例類。

我們只能創建從NSObject繼承的單例。