单元测试:外汇异常处理
在该外汇应用中,一种可能的错误情形是由于宕机或网络问题导致银行服务器不可用。为避免破坏性异常,您已在 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
____(____, ____);
}
}