2012-04-18 178 views
1

我正在爲Web服務API編寫適配器。適配器與web服務器同步文件。我想測試的一件事是,如果一個同步失敗,而我的適配器正在同步,下一個同步仍然可以拿起所有正確的文件。如何模擬測試中的失敗

我的問題是如何在與真實的Web服務交互時模擬失敗?例如,如果Web服務API包含:

class WebService { 
    List<String> getFileNamesToSync() { 
     ...... 
    } 

    File getFile(String name) throws SomeException { 
     <talks to the web service API>; 
    } 
} 

我的適配器類:

class MyAdapter { 
    void MyFunction() { 
     List<String> names = webService.getFileNamesToSync(); 
     for(String n : names) { 
      File file = webService.getFile(n); 
      ....... 
     } 
    } 
} 

我如何可以模擬到的GetFile第三次調用應失敗例外嗎?

我知道我可以通過模擬來實現這一點,但我仍然希望我的其他調用getFile從Web服務返回實際數據?這是我能用Mock實現的嗎?或者我必須寫我自己的Mock類?

+0

你也可以實現這個w的JUnit。 – Adrian 2012-04-18 19:43:45

+0

這可能不是你要找的東西,但是你可以在你的for循環中通過使用計數器並拋出一個異常(如果計數器== 3(例如))來手動拋出一個異常。 – jahroy 2012-04-18 19:44:50

+0

您可以向其發送一個無效請求來強制執行失敗生成,如不存在的文件來獲取FileNotFoundException。 – twain249 2012-04-18 19:46:27

回答

1

如果您使用Mockito,您可以創建一個Answer類,它保留一個調用計數器,在大多數調用中調用實際的類,但是當計數器達到幻數時拋出異常。