这是我的代码,我想强制它抛出一个远程异常:
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());我不知道现在该怎么断言。一旦异常被调用,我就尝试放置一个布尔值,但是断言看不到布尔值。
有什么想法吗?
发布于 2013-03-23 12:43:17
getBicycle()方法永远不会返回RuntimeException。代码本身正在捕获RuntimeException,并在被捕获时写入记录器。该方法本身将返回Bicycle或null。
您将需要重新考虑您希望getBicycle方法如何操作。如果您想让RuntimeException冒泡通过,它可能会重新抛出RuntimeException传输日志。但是,根据它的编写方式,RuntmeException永远不会通过JUnit测试
https://stackoverflow.com/questions/15582395
复制相似问题