接上篇:https://developer.aliyun.com/article/1228063?spm=a2c6h.13148508.setting.19.4a864f0e4FO91p
1. ReflectionTestUtils.setField方法
在用原生JUnit进行单元测试时,我们一般采用“ReflectionTestUtils.setField`”方法设置私有属性值。
注意:
在测试类中,UserService实例是通过@Autowired注解加载的,如果该实例已经被动态代理,“ReflectionTestUtils.setField”方法设置的是代理实例,从而导致设置不生效。
2. Whitebox.setInternalState方法
现在使用PowerMock进行单元测试时,可以采用“Whitebox.setInternalState”方法设置私有属性值。
注意:
需要加上注解“@RunWith(PowerMockRunner.class)”。
八、 私有方法
1. 模拟私有方法
1) 通过when实现
2) 通过stub实现
通过模拟方法stub(存根),也可以实现模拟私有方法。但是,只能模拟整个方法的返回值,而不能模拟指定参数的返回值。
2. 测试私有方法
3. 验证私有方法
这里,也可以用Method那套方法进行模拟和验证方法。
接下篇:https://developer.aliyun.com/article/1228059?groupCode=java