小知识,大挑战!本文正在参与“程序员必备小知识”创作活动。
前言
在写单元测试时,是否经常遇到要测试的目标类中有很多私有注入的变量呢?然而我们经常并没有报漏此私有属性的getter and setter,因为这些私有属性的注入可能是通过配置文件,或者其他渠道,是在程序启动时根据环境不同或者其他因素来决定的,所以当我们测试的时候,就需要通过为该属性设置不同的值而来测试各种分支case,但是前面已经说了一般这种变量都是私有变量,如果说专门为了测试而将修饰符改为public/protected 那未免过于暴力….
于是乎,大家常见的做法可能就是写一堆反射去修改,如果只有一处地方还好,但是如果需要测试此种场景的过多,那是不是写都写烦了,所以ReflectionTestUtils解放你的双手。
用法
首先搞一个service来辅助:
1 | java复制代码public class TestServiceImpl { |
新建一个测试类:
1 | java复制代码class TestServiceImplTest { |
通过输出以及代码,可以看到非常的简单,一行代码即可完成私有属性的更改,是不是十分的方便!
原理
这里就简单贴一下代码,看看:
1 | java复制代码public static void setField(@Nullable Object targetObject, @Nullable Class<?> targetClass, @Nullable String name, @Nullable Object value, @Nullable Class<?> type) { |
本文转载自: 掘金