实际项目开发中,我们经常会使用@Value注解从配置文件中注入属性值,写单侧时,在不启动容器的条件下,如何对这种属性进行mock呢?对这种情况,Spring提供了一个很好的工具类ReflectionTestUtils来实现。 注入属性:

@Value("${prepaid.partner.id}")
private String merchantPartnerId;

对这个属性,在单测中可以这样mock:

ReflectionTestUtils.setField(targetObject, "merchantPartnerId", "123");

顾名思义,该工具类就是利用反射机制来实现的,底层源码如图所示:

public static Field findField(Class<?> clazz, String name, Class<?> type) {Assert.notNull(clazz, "Class must not be null");Assert.isTrue(name != null || type != null, "Either name or type of the field must be specified");Class<?> searchType = clazz;while (Object.class != searchType && searchType != null) {Field[] fields = getDeclaredFields(searchType);for (Field field : fields) {if ((name == null || name.equals(field.getName())) &&(type == null || type.equals(field.getType()))) {return field;}}searchType = searchType.getSuperclass();}return null;
}

具体可参见:How do I mock an autowired @Value field in Spring with Mockito? - Stack Overflow

单测中如何mock用@Value注解注入的属性相关推荐

  1. 研效优化实践:Python单测——从入门到起飞

    作者:uniquewang,腾讯安全平台后台开发工程师 福生于微,积微成著,一行代码的精心调试,一条指令的细心验证,一个字节的研磨优化,都是影响企业研发效能工程的细节因素.而单元测试,是指针对软件中的 ...

  2. 单测利器——PowerMockito使用心得

    PowerMockito是什么? PowerMockito是一个帮助我们快速写单测的工具,如果待测试方法中调用了其他方法或远程接口(如RPC.数据库等等),但是我们又不想在单测执行过程中真正的调用,而 ...

  3. 可能是全网最好的 Spock 单测入门文章!

    Spock 是非常简洁规范的单元测试框架,网上很多资料都不齐全,例子也很难懂.我自己经过一段时间的学习,梳理了这篇文章,不仅讲解层次递进,而且还有非常简洁明了的例子,小白都能懂! 快速入门 Spock ...

  4. Jest + React Testing Library 单测总结

    大家好,我是若川.持续组织了6个月源码共读活动,感兴趣的可以点此加我微信 ruochuan02 参与,每周大家一起学习200行左右的源码,共同进步.同时极力推荐订阅我写的<学习源码整体架构系列& ...

  5. Spring依赖注入:注解注入总结

    更多11 spring 依赖注入 注解 java 注解注入顾名思义就是通过注解来实现注入,Spring和注入相关的常见注解有Autowired.Resource.Qualifier.Service.C ...

  6. jacoco + junit + mock 单测没有统计覆盖率问题

    使用junit :直接在pom文件中直接引入: <properties><project.build.sourceEncoding>UTF-8</project.buil ...

  7. 【spock】单测竟然可以如此丝滑

    0. 为什么人人都讨厌写单测 在之前的关于swagger文章里提到过,程序员最讨厌的两件事,一件是别人不写文档,另一件就是自己写文档.这里如果把文档换成单元测试也同样成立. 每个开发人员都明白单元测试 ...

  8. Maven Eclipse Junit单元测试解 + 进阶使用Mockito做service层单测(万物皆可mo)+对于异步async方法的单测

    一:简介 JUnit是一个JAVA语言的单元测试框架 主要是后端写完代码可以自己测试一下功能. 二:配置 2.1 引入 在 pom文件里引入依赖包 <dependency><grou ...

  9. Java 单测—static方法

    单测-static方法 静态方法的单测 静态方法的单测 方法上加注解 @PrepareForTest({静态方法所在的类.class}) 调用测试方法前先要mock出类. @Before public ...

最新文章

  1. 深度|机器学习到底能替人干哪些工作?《科学》列出了8条评估标准
  2. JFET直耦级联放大电路:MPF102,2SK102
  3. 小程序文本溢出显示省略号(单行/多行)
  4. asp.net core json返回的时间格式出现T 如何解决
  5. WC2019 自闭记
  6. win10默认浏览器不显示谷歌浏览器_win10系统谷歌浏览器怎么用不了?谷歌浏览器打不开网页的解决方法...
  7. 编程的心法与注意事项
  8. Processing-基础小坑-
  9. Topcoder的使用方法
  10. python使用逐行读取,出现空行,清楚空行方法
  11. 简单易懂的综合网络布线
  12. 学个Antenna:手机天线入门
  13. 现场直击 | 复旦MBA科创青干营开营
  14. 【Python基础】from pygame.base import * # pylint: disable=wildcard-import; lgtm[py/polluting-import] Mod
  15. unity打包的安卓游戏在某些设备显示异常问题解决
  16. 生鲜电商的“7年之谎”
  17. SQLDBX找不到服务器 no server found
  18. matlab累加数组的前n行,有一组m行n列的数组,在matlab中如何编程,每三个数求一次平均数(行与列分别求)?...
  19. 如何进入BIOS设置界面
  20. 华为服务器做系统蓝屏,服务器安装2008r2后蓝屏

热门文章

  1. 上海亚商投顾:沪指逼近3400点 CPO概念股再度爆发
  2. 【畅购商城】校验用户名、手机号以及前置技术Redis和阿里大鱼短信验证码
  3. [英语单词] cookie from chatGPT
  4. [hiho 02]Trie树
  5. 从授时服务器上获得时间
  6. Java实现文件监控器FileMonitor
  7. UE4通过鼠标在pawn四周移动摄像头
  8. 单臂软路由实现(二) 新版OpenWrt实现VLAN划分 结合交换机进行拨号上网
  9. oracle 选时间到五月,oracle日期时间函数小结
  10. alsa音频架构2-ASoc