开发者社区> 问答> 正文

编写单元测试时,如何定义被测对象?

已解决

编写单元测试时,如何定义被测对象?

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

    在编写单元测试时,首先需要定义被测对象,或直接初始化、或通过 Spy 包装…… 其实,就是把被测试服务类进行实例化。

    1. 直接构建对象 直接构建一个对象,总是简单又直接。

    2. 利用 Mockito.spy 方法 Mockito 提供一个 spy 功能,用于拦截那些尚未实现或不期望被真实调用的方法, 默认所有方法都是真实方法,除非主动去模拟对应方法。所以,利用 spy 功能来定 义被测对象,适合于需要模拟被测类自身方法的情况,适用于普通类、接口和虚基 类。

    3. 利用@Spy 注解 @Spy 注解跟 Mockito.spy 方法一样,可以用来定义被测对象,适合于需要模拟被测 类自身方法的情况,适用于普通类、接口和虚基类。@Spy 注解需要配合@RunWith 注解使用。 @RunWith(PowerMockRunner.class) public class UserServiceTest { @Spy private UserService userService = new UserService(); ... } 注意: @Spy 注解对象需要初始化。如果是虚基类或接口,可以用 Mockito.mock 方法实例 化。

    4. 利用@InjectMocks 注解 @InjectMocks 注解用来创建一个实例,并将其它对象(@Mock、@Spy 或直接定义 的对象)注入到该实例中。所以,@InjectMocks 注解本身就可以用来定义被测对象。 @InjectMocks 注解需要配合@RunWith 注解使用。

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

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

相关电子书

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