假設我測試了一個依賴於另一個我們不想或不能直接測試的方法的類方法,該方法處理一個checked例外,在以下的方式:現在如果斷言如果它已被使用/處理/捕獲,則拋出異常
public class A {
public void process(){
if (isProcessingSuccessful()){
LOG.info("Success");
}
else {
LOG.error("Fail");
}
}
private boolean isProcessingSuccessful(){
try{
doSomeOtherStuff();
return true;
}
catch (Exception e){
return false;
}
}
}
,如果我對A#過程(一個測試類測試),如:
@Test
public void shouldFailDueToCommandGatewayError() {
A a = new A();
// setting up preconditions
//testing here
a.process();
//Now, assert exception was thrown during the course of a.process() execution, something like
exception.expect(NullPointerException.class);
// ?? how to do that?
}
TLTD:它是可以寫入單獨的測試isProcessingSuccessful()或者做類似的事情,但讓我們說這個方法不能用於測試,li它在圖書館中是私密的嗎?
鑑於上述限制,是否有任何方式來編寫測試,以確定如上所述的基礎方法中拋出的異常?
至少有人閱讀OPs代碼(不像其他三種)。 OP也可以嘗試模擬'doSomeOtherStuff()(當它使用來自不同類的東西)並強制執行異常。 「**」 - Bah,不,不要這樣做:/ – Tom
恕我直言,如果其他三個人獨立解釋答案相同和錯誤,它會顯示這個問題不像它看起來那麼清楚。顯然,在一系列指責後的第四個嘗試以不同的方式解釋這個問題。所以我不明白你的嘆氣。 –
@Tom:我刪除了你所抱怨的部分,因爲OP已經覆蓋了問題中的內容。 –