我的開發團隊已經開始使用Mockito並且已經定義了「最終」類。我在Joshua Bloch的Effective Java中讀到過,在SO線程When to use final中,所有類都應該使用最終的修飾符。在這個線程中存在一些分歧,但我同意強制課程組成的想法,除非繼承是有意義的。Java最佳實踐與Mockito發生衝突時怎麼辦
我應該怎麼做時,我想使用像一個的Mockito測試框架,要求類沒有「最終」修改測試類?我希望別人在開發過程中遇到類似的問題。你的開發團隊做了什麼決議?
有兩個明顯的答案,例如使用JMock或在我們想測試的類上移除'final'修飾符,但我們想要堅持一個外部測試框架(除了JUnit),並且可能很難說服其他開發人員刪除'最終'修飾符。
謝謝。
制定所有*類* final#肯定不是最佳實踐......自從閱讀Effective Java已經有一段時間了,但鏈接線程的共識當然似乎並不意味着這一點。你應該把類標記爲'final'來表示他們不應該被延長的一些原因 - 如果沒有理由,它就會增加不必要的複雜性 - 就像你發現的那樣。另外,如果您意識到您確實需要將課程擴展到某個地方,則必須更改原始課程的代碼以編寫新課程 - 違反開放/關閉原則。 – Nate 2010-01-13 03:38:43