2016-03-12 130 views
0

我有一個類和它看起來像這樣單元測試API?

class A { 
    private RetryLogic logic; 
    private Service serviceClient; 
    public A(){ 
    logic = new RetryLogic(); 
    serviceClient = new Service(); 
    } 

    public Response methodA() { 
    Request request = new Request(); 
    serviceClient.addRetryLogic(logic); 
    Responce response = serviceClient.call(request); 
    return response; 
    } 
} 

重試邏輯在這種情況下,將重試服務調用如果有喜歡的服務不可用或任何HTTP錯誤故障的方法。

但是如果服務被調用並拋出任何建模的異常,它將不會重試。

如果我正在爲methodA編寫單元測試,是否適合(或者應該擔心)通過添加一個模擬HTTP異常並檢查重試是否有效的測試來測試重試邏輯?

重試邏輯基本上是不屬於我的不同包。

+0

當然,你可以在JUnit中這樣註釋測試:@Test(expected = AnyKindOfException.class) – Stefan

+0

是的,我可以嘗試測試它,但我的問題是我真的應該關心測試,因爲它是方法在一個不屬於我的包中。 – Mandar

+1

這取決於你信任包的提供者多少,以及如果在生產中發現問題有多少風險。您的工作是建議是否對其進行測試,以及向誰付費進行測試。 –

回答

0

您會測試Apache Commons HttpClientsetConnectionTimeout嗎?或者您的JDBC ClientsetAutoCommit?我不會。

如果您相信Service是因爲您信任其他依賴項,那麼測試它就沒有意義了。試想一下,有1000名開發者使用Service,並且他們都在測試重試功能......這有點浪費時間,不是嗎?