Jmockit对@Value属性进行模拟_mock value-CSDN博客
(2)修改私有属性:Deencapsulation.setField
@Tested
private OrderServiceImpl orderService;
@Test
public void mockPrivateName_test() {
    // 修改被测试类中的成员属性name
    Deencapsulation.setField(orderService, "name", "codeMock");
    String stringName = orderService.getStringName();
    Assert.assertEquals("codeMock", stringName);
}- 
作用 : 使用 JMockit 的 Deencapsulation工具直接修改被测试类的私有属性name。- 不需要通过反射手动获取和设置属性。
- 适合测试一些依赖外部配置或框架注入的私有属性。
 
- 
为什么修改私有属性? - 在实际运行中,name的值来源于@Value("${order.name}"),但在测试环境中通常不会加载真实配置文件。
- 因此**,通过 Deencapsulation.setField修改属性值,可以模拟配置文件加载的效果。**
 
- 在实际运行中,
拓展(接之前的文章):

为什么 orderService 用 @Tested,userService 用 @Injectable?
原因1:测试目标的不同
- 
orderService是测试的核心对象:- 它是测试中需要调用的方法所属的类,直接标注为 @Tested,表示这是测试的目标类。
- JMockit 会自动实例化它,并注入依赖。
 
- 它是测试中需要调用的方法所属的类,直接标注为 
- 
userService是被测试类的依赖:- 它只是 orderService的一个成员,用于辅助orderService完成业务逻辑。
- 标注为 @Injectable后,你可以控制其行为,避免依赖真实实现。
 
- 它只是 

