2008-09-18 49 views
3

我的代碼需要一個接口作爲輸入,但只能解釋一些接口的方法(通常只是getter)。在Java中存儲複雜接口的最簡單方法是什麼?

測試代碼時,我很想定義一個返回測試數據的匿名內部類。但是我該如何處理接口需要的所有其他方法?

我可以使用我的IDE爲接口自動生成存根,但看起來代碼量很大。

什麼是最簡單的方法來存根我所關心的兩種方法,而不是我沒有的方法?

回答

5

如果您使用JUnit進行測試,請使用Mocks而不是存根。

閱讀Martin Fowler的開創性文章「Mocks Aren't Stubs

我推薦EasyMock框架,它就像一個魅力的使用反射自動嘲諷你的界面。它比Fowler文章中的代碼示例更高級一些,尤其是當您使用unitils庫來封裝EasyMock時,所以語法將比本文中的語法簡單得多。另外,如果你沒有接口,但你想模擬一個具體的類,EasyMock有一個類擴展。

0

寫的「適配器類」,並覆蓋只有你關心的方法。

class MyAdapter extends MyClass { 
    public void A() { 
    } 
    ... 
} 
0

我相信經典的方法是用空方法創建一個抽象類。 至少,這就是Sun爲MouseListener所做的工作,創建了MouseAdapter以簡化這些事件的使用。

0

EasyMock或JMock絕對是贏家。我沒有使用JMock,但我知道在EasyMock中,您可以根據測試腳本設置Mock對象,並且在測試過程中它會在某些情況或某些點返回某些值。通常在不到一個小時的時間內學習並運行起來相當容易。

+0

JMock也做到這一點。 – marcospereira 2008-09-19 06:00:39

相關問題