首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在JUnit测试中强制Mockito抛出RemoteException

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

Stack Overflow用户
提问于 2013-03-23 09:33:50
回答 1查看 5.2K关注 0票数 2

这是我的代码,我想强制它抛出一个远程异常:

代码语言:javascript
复制
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测试:

代码语言:javascript
复制
boolean exceptionThrown=false;
Bicycle mockB = mock(Bicycle);
mockB.setBicycle(null);
stub(mockB.getBicycle()).toThrow(new RemoteException(){boolean exceptionThrown = true;});

assertTrue(exceptionThrown);

我一直收到以下错误:

代码语言:javascript
复制
Checked exception is invalid for this method!

任何帮助都将不胜感激。

编辑:

而不是

代码语言:javascript
复制
stub(mockB.getBicycle()).toThrow(new RemoteException(){boolean exceptionThrown = true;});

我也试过

代码语言:javascript
复制
doThrow(new RemoteException(){boolean exceptionThrown = true;}).when(mockB).getBicycle();

代码语言:javascript
复制
Mockito.when(mockB.getBicycle()).thenThrow(new RemoteException(){boolean exceptionThrown=true;});

还是不走运。

Edit2 -在完全理解并正确使用API之后又前进了一步:

代码语言:javascript
复制
when(mockB.getBicycle()).thenThrow(new RuntimeException());

我不知道现在该怎么断言。一旦异常被调用,我就尝试放置一个布尔值,但是断言看不到布尔值。

有什么想法吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-03-23 12:43:17

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

您将需要重新考虑您希望getBicycle方法如何操作。如果您想让RuntimeException冒泡通过,它可能会重新抛出RuntimeException传输日志。但是,根据它的编写方式,RuntmeException永远不会通过JUnit测试

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15582395

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档