天天看點

單元測試—— 強大的 PowerMock

系列文章

《單元測試—— Mock 對象行為之 Mockito》

《單元測試—— Spring 環境下測試之 SpringJUnit4ClassRunner》

《單元測試—— Spring @Scheduled》

       Mockito 這個測試工具已在前面的文章寫道,它能夠 Mock 對象的行為,模拟測試對象的依賴,基本上能夠滿足大多數的單元測試。但是 Mockito 不可以實作對靜态函數、構造函數、私有函數、Final 函數以及系統函數的模拟,是以 PowerMock 在 EasyMock 以及 Mockito 基礎上的繼續擴充,通過定制類加載器等技術,PowerMock 實作了之前提到的所有模拟功能,使其成為大型系統上單元測試中的必備工具 。

       《使用 PowerMock 以及 Mockito 實作單元測試》這邊文章已經詳細講解了對 PowerMock 的使用,這裡簡單的羅列以下 PowerMock 的一些功能:

       1, 模拟 Static 方法

       2, 模拟構造函數

       3, 模拟私有以及 Final 方法

       4, 局部模拟

       PowerMock 的功能很強大,同時它也支援 Mockito。是以使用 PowerMock 基本上可以滿足所有的測試。因為它的強大,那麼是不是所有的單元測試用 PowerMock 就好了呢?

       然而,在實踐中,并不是這樣的。在靈活開發的模式中,單元測試就是一份完整的需求和設計文檔,靈活開發模式也要求用最簡單的代碼完成功能。單元測試不必太過複雜,書寫複雜的單元測試的代價,一定比重構的代價大得多。在大多數情況下,重構是可以代替複雜的單元測試的。