開始使用免費開始

單元測試:外匯例外狀況

兌換應用程式的一種可能錯誤情境,是因為中斷或網路問題導致銀行伺服器無法使用。為了避免造成中斷的例外,你已在 convertEuroTo 方法內加入 try/catch。

請模擬此錯誤情境:讓 mock 的 EuropeanCentralBankServer 物件在查詢匯率時拋出例外。

本練習屬於課程

Java 測試入門

檢視課程

練習說明

  • 讓 mock 的 bank 物件在呼叫 getRateEuroTo 時拋出例外。
  • 建立你想要模擬的確切例外物件。
  • 驗證 convertEuroTo 方法在此情境下不會拋出例外,而是回傳 -1

動手互動練習

試著完成這個範例程式碼,體驗一下這個練習。

class Main {
    public static void main(String[] args) {
        launchMockitoTestsAndPrint(ExchangeAppTest.class);
    }
}

class ExchangeAppTest {
    @Test
    void convertEuroTo_throwsException_whenBankUnavailable() {
        EuropeanCentralBankServer bank = mock(EuropeanCentralBankServer.class);
        ExchangeApp exchangeApp = new ExchangeApp(bank);
        double euroAmount = 450;
        // Stub the mock to throw an exception
        when(exchangeApp.convertEuroTo("TST", 100)).____(new ____("Bank server is unavailable."));
        
        double tstAmount = exchangeApp.convertEuroTo("TST", euroAmount);

		// Assert on the return value of the method
		____(____, ____);
    }
}
編輯並執行程式碼