首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >获取EasyMock模拟对象以抛出异常

获取EasyMock模拟对象以抛出异常
EN

Stack Overflow用户
提问于 2011-02-17 18:10:15
回答 2查看 43.3K关注 0票数 22

我正在使用EasyMock为许多协作类编写单元测试。其中一个类(让我们称其为Foo)打开到远程服务器的网络连接,并将该服务器的XML响应解析为其他类可以使用的内容。

目前,我的测试仅涵盖以下场景:一切正常,远程服务器正常运行,并按预期返回XML。但是,如果我可以模拟Foo,这样我就可以模拟如果远程服务器关闭或存在其他导致Foo抛出IOException的问题时会发生什么,我会更高兴。

我已经看过mock应用程序接口,但我看不到任何类似于请求EasyMock抛出异常的方法。

对我来说,基于Exception的测试并不是绝对必要的,但我很好奇是否可以使用EasyMock,我认为以这种方式测试Foo的公共合同会很有用。

以前有人用EasyMock做过类似的事情吗?

参考

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-02-17 18:12:04

documentation

为了指定要抛出的异常(更准确地说是:Throwables),由expectLastCall()expect(T value)返回的对象提供了方法andThrow(Throwable throwable)。该方法必须在调用模拟对象(它为该对象指定要抛出的Throwable )之后在record状态下调用。

每个方法都可能抛出未检查的异常(即RuntimeExceptionError及其所有子类)。检查过的异常只能从实际引发它们的方法中引发。

例如:

代码语言:javascript
复制
expectLastCall().andThrow(new HibernateException("Something terrible happened"));

expect(query.list()).andThrow(
        new HibernateException("Something terrible happened"));
票数 29
EN

Stack Overflow用户

发布于 2011-02-17 18:12:55

您可以在easy mock中使用andThrow(Throwable throwable)方法。查看documentation标题Working with Exceptions

例如

代码语言:javascript
复制
 expect(mock.voteForRemoval("Document"))
    .andThrow(new RuntimeException(), 4);
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5027533

复制
相关文章

相似问题

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