Java 获取EasyMock模拟对象以引发异常
我正在使用EasyMock为许多协作类编写单元测试。其中一个类(称之为Java 获取EasyMock模拟对象以引发异常,java,unit-testing,easymock,Java,Unit Testing,Easymock,我正在使用EasyMock为许多协作类编写单元测试。其中一个类(称之为Foo)打开到远程服务器的网络连接,并将服务器的XML响应解析为其他类可以使用的内容 目前,我的测试只包含这样的场景:一切都很好,远程服务器已启动并按预期运行并返回XML。但是,如果我可以模拟Foo,模拟远程服务器关闭时发生的情况,或者有其他问题导致Foo引发IOException,我会更高兴 我已经看过EasyMock API,但没有看到任何类似于要求模拟抛出异常的方法 对我来说,基于异常的测试并不是绝对必要的,但我很好奇E
Foo
)打开到远程服务器的网络连接,并将服务器的XML响应解析为其他类可以使用的内容
目前,我的测试只包含这样的场景:一切都很好,远程服务器已启动并按预期运行并返回XML。但是,如果我可以模拟Foo
,模拟远程服务器关闭时发生的情况,或者有其他问题导致Foo
引发IOException
,我会更高兴
我已经看过EasyMock API,但没有看到任何类似于要求模拟抛出异常的方法
对我来说,基于异常的测试并不是绝对必要的,但我很好奇EasyMock是否可行,我认为这样测试Foo
的公共契约会很有用
以前有人对EasyMock做过类似的事吗
参考资料
来自:
为了指定要抛出的异常(更确切地说:Throwable
s),由expectLastCall()
和expect(T值)
返回的对象提供了方法和行(Throwable Throwable)
。该方法必须在调用模拟对象后以记录状态调用,该对象指定要抛出的Throwable
每个方法都可以抛出未经检查的异常(即,RuntimeException
、Error
及其所有子类)。选中的异常只能从实际抛出它们的方法中抛出
例如:
expectLastCall().andThrow(new HibernateException("Something terrible happened"));
expect(query.list()).andThrow(
new HibernateException("Something terrible happened"));
您可以在easy mock中使用方法和throw(Throwable Throwable)
。检查-标题处理异常
比如说
expect(mock.voteForRemoval("Document"))
.andThrow(new RuntimeException(), 4);
如果有人发现这对他们不起作用。。。确保使用EasyMock.replay