开发者社区> 问答> 正文

在编写单元测试用例时,如何模拟依赖对象?

已解决

在编写单元测试用例时,如何模拟依赖对象?

展开
收起
游客lmkkns5ck6auu 2022-10-26 18:10:21 338 0
1 条回答
写回答
取消 提交回答
  • 推荐回答

    在编写单元测试用例时,需要模拟各种依赖对象——类成员、方法参数和方法返回 值。

    1. 直接构建对象 如果需要构建一个对象,最简单直接的方法就是——定义对象并赋值。

    2. 反序列化对象 如果对象字段或层级非常庞大,采用直接构建对象方法,可能会编写大量构建程序 代码。这种情况,可以考虑反序列化对象,将会大大减少程序代码。由于 JSON 字 符串可读性高,这里就以 JSON 为例,介绍反序列化对象。 1) 反序列化模型对象 2) 反序列化集合对象 3) 反序列化映射对象

    3. 利用 Mockito.mock 方法 Mockito 提供一个 mock 功能,用于拦截那些尚未实现或不期望被真实调用的方法, 默认所有方法都已被模拟——方法为空并返回默认值(null 或 0),除非主动执行 doCallRealMethod 或 thenCallRealMethod 操作,才能够调用真实的方法。 利用 Mockito.mock 方法模拟依赖对象,主要用于以下几种情形: • 只使用类实例,不使用类属性; • 类属性太多,但使用其中少量属性(可以 mock 属性返回值); • 类是接口或虚基类,并不关心其具体实现类。

    4. 利用@Mock 注解 @Mock 注解跟 Mockito.mock 方法一样,可以用来模拟依赖对象,适用于普通类、 接口和虚基类。@Mock 注解需要配合@RunWith 注解使用。

    5. 利用 Mockito.spy 方法 Mockito.spy 方法跟 Mockito.mock 方法功能相似,只是 Mockito.spy 方法默认所有 方法都是真实方法,除非主动去模拟对应方法。

    6. 利用@Spy 注解 @Spy 注解跟 Mockito.spy 方法一样,可以用来模拟依赖对象,适用于普通类、接口 和虚基类。@Spy 注解需要配合@RunWith 注解使用。 注意: @Spy 注解对象需要初始化。如果是虚基类或接口,可以用 Mockito.mock 方法实例 化。

    以上内容摘自《Java工程师必读手册》电子书,点击https://developer.aliyun.com/ebook/download/7780 可下载完整版

    2022-10-26 20:22:00
    赞同 展开评论 打赏
来源圈子
更多
收录在圈子:
阿里云开发者社区官方技术圈,用户产品功能发布、用户反馈收集等。
问答排行榜
最热
最新

相关电子书

更多
用AI 高效测试移动应用 立即下载
移动互联网测试到质量的转变 立即下载
给ITer的技术实战进阶课-阿里CIO学院独家教材(四) 立即下载