簡體   English   中英

單元測試私有方法 - 目標C.

[英]Unit testing private method - objective C

我使用GHUnit 我想單獨測試私有方法,不知道如何測試它們。 我找到了很多關於為什么不測試私有方法的答案。 但沒有找到如何測試它們。

我不想討論是否應該測試私有,但是會關注如何測試它。

誰能給我一個如何測試私有方法的例子?

Objective-C中的方法並不是真正的私有。 您收到的錯誤消息是編譯器無法驗證您調用的方法是否存在,因為它未在公共接口中聲明。

解決這個問題的方法是在類類別中公開私有方法,它告訴編譯器方法存在。

所以在測試用例文件的頂部添加這樣的內容:

@interface SUTClass (Testing)

- (void)somePrivateMethodInYourClass;

@end

SUTClass是您為其編寫測試的類的實際名稱。

這將使您的私有方法可見,並且您可以在沒有編譯器警告的情況下對其進行測試。

有點晚了,但我剛上了TDD列車。

不應測試私有方法。 因為您編寫私有方法來支持您的公共方法,因此測試您的公共方法會間接測試支持它們的私有方法。

原則“不應該測試私有方法”的原則是“當你需要測試私有方法時,它可能意味着你應該將這些方法移動到單獨的類” ,從而使它們公開。

同意@Lord Zsolt

另請注意下一步(來自測試驅動的iOS開發 ISBN-10:0-321-77418-3,ISBN-13:978-0-321-77418-7)

測試私有方法

我經常被問到,“我應該測試我的私人方法嗎?”或相關問題“我應該如何測試我的私人方法?”人們問第二個問題假設第一個問題的答案是“是”,現在正在尋找一種在其測試套件中公開其類的私有接口的方法。

我的回答依賴於觀察一個微妙的事實:你已經測試了你的私人方法。 通過遵循測試驅動開發中常見的紅綠重構方法,您設計了對象的公共API來完成這些對象需要執行的工作。 通過測試指定的工作 - 並繼續執行測試,確保您沒有破壞任何東西 - 您可以自由地組織您認為合適的類的內部管道。 您的私有方法已經過測試,因為您所做的只是您已經測試過的重構行為。

您永遠不應該在私有方法未經測試或未經完全測試的情況下結束,因為只有在您看到清理公共方法實現的機會時才創建它們。 這確保了私有方法的存在只是為了支持類的公共行為,並且必須在測試期間調用它們,因為它們肯定是從公共方法調用的。

如果方法是私有的,那么你永遠不應該測試它。

想想這個。 您應該測試方法的行為和合同,而不是內部實現

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM