当前位置: 首页 > 面试题库 >

使EasyMock模拟对象引发异常

邢永安
2023-03-14
问题内容

我正在使用EasyMock编写许多协作类的单元测试。这些类之一(称为Foo)打开了到远程服务器的网络连接,并将该服务器的XML响应解析为其余类可以使用的东西。

目前,我的测试仅涉及所有情况都是笨拙且远程服务器已启动并正在运行并按预期返回XML的情况。但是,如果可以进行模拟,以便模拟远程服务器关闭或发生其他问题导致抛出,该怎么办,我
更高兴。Foo``IOException``Foo

我看过EasyMock API,但看不到任何看起来像要求模拟程序抛出异常的方法的东西。

对我而言,进行Exception基础测试并不是绝对必要的,但我很好奇EasyMock是否可能进行这种测试,我认为Foo以这种方式测试公共合同会很有用。

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

参考文献

  • EasyMock API

问题答案:

从文档中:

为了指定Throwable要抛出的异常(更确切地说:s),由expectLastCall()和返回的对象expect(T value)提供方法andThrow(Throwable throwable)。在调用要为其指定模拟对象的Mock对象之后,必须以记录状态调用该方法Throwable

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

例如:

expectLastCall().andThrow(new HibernateException("Something terrible happened"));

expect(query.list()).andThrow(
        new HibernateException("Something terrible happened"));


 类似资料:
  • 它的实现DAO类类似于下面的一个。 我搜索了PowerMock/EasyMock文档,但我猜大多数API方法都提供了对象,这些对象为我提供了DAO接口的虚拟实现类。 > 是否有某种方法可以创建连接的模拟对象(假设我没有物理数据库访问权限),并可以运行类中提供的后续代码,因为我必须使用这种模拟来实现代码覆盖率?

  • 我尝试从以下方法创建单元测试,但我找不到一个解决方案来模拟每个方法内的调用,请您帮助我使用EasyMock为这些方法创建JUnit Test: 提前感谢

  • 我正在尝试为以下类编写单元测试: 还有一些其他方法,但这个设置代码是与我的问题相关的。在单元测试中,我想模拟(使用EasyMock)对象以及它将返回的和对象: 当我尝试用JUnit运行它时,我得到以下错误: 在上没有我可以看到的公共变量。我是EasyMock的新手,所以我想我的问题是:对于我应该告诉我的mock返回什么,以及如何告诉它这样做?我根本不知道为什么设置代码会被调用,所以这是另一个谜。更

  • 单元测试以空指针异常退出。SafeFile rootRepoDir的值为null,我不知道为什么。我嘲笑过它,那为什么它显示为null?如果我删除这一行,powerMockito.whennew(Safefile.class).withanyArguments().thenreturn(file1);则rootRepoDir的值为非空 我在PrepareForTest中添加了sc.class,使用

  • 问题内容: 是否可以使用EaskMock模拟具体的类?如果是这样,我该怎么办? 问题答案: 请参阅EasyMock类扩展文档,并从SourceForge项目下载它。但是,您不能模拟最终方法。 编辑:如注释中所述,这是EasyMock v3及更高版本的一部分。

  • 我有一堂这样的课: 我需要使用EasyMock模拟服务<代码>EasyMock。createMock()后跟replay()不起作用。P、 S:这是其他开发人员编写的遗留代码,我们不能在这里更改代码。