开发者社区> 问答> 正文

如何注入依赖对象?

已解决

如何注入依赖对象?

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

    当模拟完这些类成员对象后,我们需要把这些类成员对象注入到被测试类的实例中。 以便在调用被测试方法时,可能使用这些类成员对象,而不至于抛出空指针异常。

    1. 利用 Setter 方法注入 如果类定义了 Setter 方法,可以直接调用方法设置字段值。

    2. 利用 ReflectionTestUtils.setField 方法注入 JUnit 提供 ReflectionTestUtils.setField 方法设置属性字段值。

    3. 利用 Whitebox.setInternalState 方法注入 PowerMock 提供 Whitebox.setInternalState 方法设置属性字段值。

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

    5. 设置静态常量字段值 有时候,我们需要对静态常量对象进行模拟,然后去验证是否执行了对应分支下的 方法。比如:需要模拟 Lombok 的@Slf4j 生成的 log 静态常量。但是, Whitebox.setInternalState 方法和@InjectMocks 注解并不支持设置静态常量,需要自己实现一个设置静态常量的方法。

    注意:经过测试,该方法对于 int、Integer 等基础类型并不生效,应该是编译器常量优化导致。

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

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

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载