2009-10-28 56 views

回答

2

你爲什麼不嘗試了EasyMock或

的Mockito
11

嘗試Mockito,你會愛上它!

您可以在此blog post中看到此庫,顯示了6個簡單的Mockito使用示例。

一個簡單的例子:

@Test 
public void iteratorWillReturnHelloWorld(){ 
    //arrange 
    Iterator i = mock(Iterator.class); 
    when(i.next()).thenReturn("Hello").thenReturn("World"); 
    //act 
    String result = i.next() + " " + i.next(); 
    //assert 
    assertEquals("Hello World", result); 
} 
關於您的要求

編輯:

似乎的Mockito運行相當好於Java 1.4和JUnit 3,如本blog post規定。

同樣的例子同上,但對Java 1.4:

public void testIteratorWillReturnHelloWorld(){ 
    //arrange 
    Iterator i = Mockito.mock(Iterator.class); 
    Mockito.when(i.next()).thenReturn("Hello").thenReturn("World"); 
    //act 
    String result = i.next() + " " + i.next(); 
    //assert 
    assertEquals("Hello World", result); 
} 
+0

這是我第一次見到Mockito的經歷......非常整潔。謝謝! – 2009-10-30 13:56:39

3

有提供全系列的嘲諷庫爲Java:

  • EasyMock,可以說是目前最流行的嘲弄庫。廣泛的功能,易於使用。
  • Mockito,原本基於EasyMock的代碼,使用了類似的範例爲嘲諷,但自動執行多項任務,如切換模擬對象的狀態(即記錄,回放,驗證,重置
  • jMock,嘲諷基於Hamcrest匹配器。沒有親自使用過這個,但從我所瞭解的情況來看,這至少是體面的。

......並且很可能還有一些其他使用較少的庫,我甚至沒有聽說過。

由於您的要求是JDK 1.4.2支持,不幸的是您可以選擇舊版本的EasyMock或真正舊版本的jMock。即使Java5的支持將在兩天內結束(30 October 2009, that is!),所以如果可能的話,嘗試從1.4.2時代開始 - 你(和/或你的公司)遠遠落後於其他人,並且在任何嚴肅的技術之外支持。

+0

是的,我的公司有點落後於技術的進步。我希望他們能夠升級我即將維護的這個應用程序。 – zfranciscus 2009-10-29 01:13:57

1

沒有人認識到這一點,但你爲什麼試圖嘲笑私人方法?這幾乎總是一個壞主意,因爲它破壞了封裝。

+1

那麼現在我們正在維護一個寫得不好的應用程序。一些類有非常大的私有方法,需要嚴肅的重構。作爲這項工作的一部分,我們正在努力圍繞私有方法進行良好的單元測試,然後慢慢地重新構建這些方法 – zfranciscus 2009-11-18 22:05:03

+0

我仍然認爲嘲笑私有方法不是一個好主意,還有其他技術。我假設你有Feathers關於使用遺留代碼的書? – 2009-11-19 13:21:15

相關問題