gpt4 book ai didi

Java Mock 抛出一个异常,然后返回一个值?

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:16:08 24 4
gpt4 key购买 nike

我正在使用 JUnit 4 和 Mockito 2。我正在尝试模拟一种情况,在这种情况下,模拟函数在第一次调用时返回异常,并在随后的调用中返回有效值。我尝试简单地使用 thenThrow() 后跟 thenReturn(),但这显然不是正确的方法

when(stmt.executeUpdate()).thenThrow(new SQLException("I have failed."));
when(stmt.executeUpdate()).thenReturn(1);
sut.updateValue("1");
verify(dbc).rollback();
sut.updateValue("2");
verify(dbc).commit();

但是,这两个调用都会导致对 catch 语句中的 rollback() 的调用。

最佳答案

最简单的方法是这样的:

when(stmt.executeUpdate())
.thenThrow(new SQLException("I have failed."))
.thenReturn(1);

但单元测试中的单个方法应该验证关于代码行为的单一期望。因此,更好的方法是编写两个单独的测试方法。

关于Java Mock 抛出一个异常,然后返回一个值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45597061/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com