2015-05-11 33 views
7

我正在研究一個項目,我們正在使用JUnit和Mockito進行測試。現在我試圖找出將PowerMock添加到混音中的副作用。爲什麼不是PowerMock

它有什麼缺點,我應該知道的任何依賴關係,任何穩定性問題?

我看到它支持Java 8.那裏有什麼問題嗎?從我讀過的內容來看,獲得Java 7支持是一條漫長的道路。

編輯:我想這將總結這一切將是一個問題:

會是什麼原因不使用PowerMock?

+0

您能否更專注一些你擔心PowerMock可能不可靠的方式? –

+0

此外,請將問題數量限制爲一個或至少一個概念,因爲現在這個帖子正好落入[「你不清楚你要求的類別」)(http://stackoverflow.com/幫助/閉的問題)。 –

+0

我希望現在更清楚一點。它也在他們的主頁上寫道:「將它交給初級開發者可能會造成更多的傷害而不是好的。」 – KKO

回答

27

通常,如果您啓動新項目,並且由於代碼體系結構的原因而想要/必須使用PowerMock,則意味着此體系結構很糟糕,需要改進。 Power Mock讓您可以訪問模擬靜態方法,構造函數等,這意味着您的代碼不符合最佳編程原則。

電源模擬應該用於遺留應用程序,您不能更改已提供給您的代碼。通常這樣的代碼沒有單元/集成測試,甚至很小的更改都會導致應用程序出現錯誤。

+2

這是最合適的答案。 Power Mock是一個非常有用的專用工具,用於製作遺留,臭味或其他「困難」的代碼可測試性(一個很好的例子,不是代碼味道會嘲笑「final」類),廣泛地將它用於積極開發的代碼基地可能是一個問題的標誌。 –

+0

好吧,我明白,powermock應該只用於遺留代碼而不是新項目。我不明白的是「爲什麼」?如果您在新項目中使用它,是否會出現任何問題?有時可能會有靜態類,甚至可能是最終的,需要測試,對嗎? – KKO

+0

它主要是關於代碼設計。好的和乾淨的代碼並不要求具有很難測試的靜態方法。除了使用它們之外,還使用輕量級和鬆散耦合的服務。請參閱http://stackoverflow.com/questions/871434/java-utility-class-vs-service。但是,這當然取決於你想在你的系統中實現什麼。 – wsl