是爲公共方法或私有方法編寫的大部分JUnit測試嗎?如果我沒有那麼多時間,我需要關注哪些方面?我需要關注在JUnit測試中測試「公共」方法還是「私有」方法?
回答
您應該測試構成API一部分的所有內容。除非您使用反射,否則這意味着公共/受保護和包級別的方法。
顯然,這是意見。但它是基於經驗的。讓我進一步聽取我的意見。
理想情況下,您應該練習測試驅動開發。在這種做法你:
- 先編寫測試,包括在他們的測試對象,你願望擁有的公共方法。這有助於您設計一個有用的API。
- 然後你寫足夠的代碼來通過測試。這將給你100%的覆蓋率和沒有無關的代碼。
- 然後你重構。
在進入重構階段之前,您可能甚至沒有任何私有方法。
取決於您的測試目標。 理想情況下,您想要以100%覆蓋範圍測試所有人:)
對不起,但100%的LOC覆蓋率並不是真正經濟有效的測試方法;並不能保證課堂能夠達到應有的水平。但是,它可能導致虛假的安全感。 – 2012-03-23 06:38:25
在具有用戶界面的真實世界應用程序中,它也幾乎是不可能的 - 因此也是笑臉。設定你的目標高我說。 – dbrin 2012-03-23 17:52:16
您測試類的行爲。從公開的方法開始。如果您覆蓋了對象的所有狀態,那麼您很可能會覆蓋私有方法。目標爲100%國家覆蓋(只是一個標記,在實際情況下不是真的可以實現)
我會獎勵這個答案。我希望更多的人這樣想。測試應該是檢查你的班級是否滿足其要求;而不是你有什麼方法。如果你建立你的方法,然後看看測試它們,你就冒着爲你已經知道的功能編寫測試的風險;而不是爲你需要的功能編寫測試。 – 2012-03-23 06:18:09
我已經授予了100個聲譽點的承諾獎勵。這個強大的答案強調我們應該測試行爲,而不是方法。它建議100%的國家覆蓋面(這是非常好的);而不是100%的LOC覆蓋率(這既不經濟也毫無意義)。我希望在我漫長的職業生涯中遇到的更多開發人員擁有Jayan對單元測試的態度。 – 2012-03-26 07:36:53
@David Wallace:謝謝 - 增加了對'國家覆蓋面'的壓力 - 希望它不會與聲明範圍混淆:) – Jayan 2012-03-26 07:38:34
我懷疑你會看到很多私人方法在周圍浮動,也就是說,他們會出現在方法,其中涉及的變量不應在外部/非特定情況之外進行修改。這就是說,公共和私人之間的主要區別在於可訪問性:私人只能在班級中訪問,而公共可以在班級之外訪問。
- 1. Junit測試私有方法
- 2. 根據私有方法測試公共方法的方法
- 3. 測試私有方法,澄清需要
- 4. JUnit測試方法,測試add方法
- 5. 未測試公共方法
- 6. JUNIT - 測試方法
- 7. 測試內部方法的單元測試公共方法
- 8. junit和java:測試非公開方法
- 9. Java測試(公共,私有)
- 10. 我需要測試方法是測試類
- 11. 公共方法單位測試返回指向私有成員
- 12. 註釋使私有方法只針對測試類別公開
- 13. Java - JUnit - 測試方法 - MultipleMarkersError
- 14. Junit測試getInstance方法
- 15. junit測試異常方法
- 16. Junit測試空方法
- 17. JUNIT測試void方法
- 18. 方法的Java JUnit測試
- 19. 如何區分api測試期間的公共方法和私有方法?
- 20. 測試調用相同私有方法的多個公共方法
- 21. 關於Junit測試方法的查詢
- 22. JUnit測試:靜態方法調用到測試方法
- 23. 有沒有辦法測試Android服務中的公共方法?
- 24. 您是否需要在OCUnit的測試用例類中的公共接口中定義測試方法
- 25. 如何在JUnit中測試void方法
- 26. WPF MVVM - 單元測試命令 - 私人與公共方法?
- 27. 爲什麼要將Junit中的測試方法定義爲公共?
- 28. 如何在JUnit測試用例中測試方法中的方法?
- 29. Java單元測試:替換測試中的私有方法
- 30. JUnit測試找不到我想測試的方法
1.你總是需要時間進行測試。如果你不這樣做,那麼你做錯了。 2.從公共方法開始測試所有內容。 – zengr 2012-03-23 05:36:04
這是一個測試方法問題,因此它可能屬於http://programmers.stackexchange.com/。 – tjdett 2012-03-23 05:38:32
如果您需要測試私有方法以獲得完整的覆蓋範圍,那麼您需要重構。 – Synesso 2012-03-23 05:42:05