2013-07-19 111 views
1

我使用JUnit4和Mockito爲我的應用程序編寫了單元測試,並且希望對其進行全面覆蓋。但我不完全理解如何覆蓋異常分支。 例如:如何進行單元測試以覆蓋異常分支

try { 
    Thread.sleep(100); 
} catch (InterruptedException e) { 
    e.printStackTrace(); 
} 

我如何從測試異常中調用?

+0

它只是一個例外。我的意思是調用任何異常 – NikedLab

+0

它取決於可能拋出異常的代碼以及您感興趣的異常類型。 – Raedwald

回答

2

雖然你可能不能夠輕鬆地插入一個例外成特別Thread.sleep,因爲它被稱爲靜態,而不是對注入情況下,您可以輕鬆地存根注入依賴拋出異常調用時:

@Test 
public void shouldHandleException() throws Exception { 
    // Use "thenThrow" for the standard "when" syntax. 
    when(dependency.someMethod()).thenThrow(new IllegalArgumentException()); 

    // Void methods can't use "when" and need the Yoda syntax instead. 
    doThrow(new IllegalArgumentException()).when(dependency).someVoidMethod(); 

    SystemUnderTest system = new SystemUnderTest(dependency); 
    // ... 
}