Mock bean失败一直为null

原来的代码如下:
 


@Component
public class TargetChargeFinder {@AutowiredChargeRepository chargeRepository;

mock bean chargeRepository一直失败,且其值一直为null。原因在于,测试的地方,对于TargetChargeFinder没有采取注入的方式加入测试类当中,而是new的

   private TargetChargeFinder finder;

mock的时候,需要获取到成员变量chargeRepository,该成员变量既没有构造方法,也没有set方法,因此没有办法对其赋值,因此mock一直失败。

解决办法一,加入构造方法参数

@AllArgsConstructor
@Component
public class TargetChargeFinder {ChargeRepository chargeRepository;

在测试类当中像下面这么写:

@MockBean
ChargeRepository chargeRepository;.... 
finder = new TargetChargeFinder(chargeRepository);

方法而,使用set方法赋值

@MockBean
ChargeRepository chargeRepository;....   
finder = new TargetChargeFinder();finder.chargeRepository = this.chargeRepository;