开始使用免费开始使用

单元测试:外汇异常处理

在该外汇应用中,一种可能的错误情形是由于宕机或网络问题导致银行服务器不可用。为避免破坏性异常,您已在 convertEuroTo 方法中编写了 try/catch。

通过让 mock 的 EuropeanCentralBankServer 对象在请求汇率时抛出异常,来模拟该错误情形。

本练习是课程的一部分

Java 测试入门

查看课程

练习说明

  • 当调用 getRateEuroTo 时,让 mock 的 bank 对象抛出异常。
  • 创建您想要模拟的精确异常对象。
  • 验证在该情形下,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
		____(____, ____);
    }
}
编辑并运行代码