gpt4 book ai didi

java - 如何强制 Mockito 在 JUnit 测试中抛出 RemoteException

转载 作者:行者123 更新时间:2023-11-29 03:35:54 31 4
gpt4 key购买 nike

这是我想要强制抛出远程异常的代码:

transient Bicycle b=null;

public Bicycle getBicycle() {
if(b==null) {
try {
b=new Bicycle(this);
} catch (RemoteException ex) {
Logger.getLogger(Bicycle()).log(Level.SEVERE, null, ex);
}
}
return b;
}

这是我使用 Mockito 运行的 JUnit 测试:

boolean exceptionThrown=false;
Bicycle mockB = mock(Bicycle);
mockB.setBicycle(null);
stub(mockB.getBicycle()).toThrow(new RemoteException(){boolean exceptionThrown = true;});

assertTrue(exceptionThrown);

我不断收到以下错误:

Checked exception is invalid for this method!

我们将不胜感激。

编辑:

代替

stub(mockB.getBicycle()).toThrow(new RemoteException(){boolean exceptionThrown = true;});

我也试过

doThrow(new RemoteException(){boolean exceptionThrown = true;}).when(mockB).getBicycle();

Mockito.when(mockB.getBicycle()).thenThrow(new RemoteException(){boolean exceptionThrown=true;});

仍然没有运气。

Edit2 - 在完全理解 API 并正确使用后更进一步:

when(mockB.getBicycle()).thenThrow(new RuntimeException());

我现在不知道如何断言。我尝试在异常被调用后放置一个 boolean 值,但断言看不到 boolean 值。

有什么想法吗?

最佳答案

getBicycle() 方法永远不会返回 RuntimeException。代码本身正在捕获 RuntimeException,并在捕获时写入记录器。该方法本身将返回 Bicycle 或 null。

您需要重新考虑您希望 getBicycle 方法如何运行。如果您希望 RuntimeException 冒泡,它可以在日志记录时重新抛出 RuntimeException。但是,根据它的编写方式,RuntmeException 永远不会出现在 JUnit 测试中

关于java - 如何强制 Mockito 在 JUnit 测试中抛出 RemoteException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15582395/

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