单元测试mockito遇到的问题总结

1.对被spring依赖注入(@Autowired)的属性进行处理

接口:

@Service
public interface Ball {
    String playFootBall();
}

实现类:

@Service
public class Football implements Ball {
    @Override
    public String playFootBall() {
        return "love football";
    }
}

被测试类

@Service
public class People {
    @Autowired
    private Ball football;

    public String play() {
//        return "love football";
        return football.playFootBall();
    }
}

测试类

// 在使用spy过的实例前,需先调用 :MockitoAnnotations.initMocks(this)
// 或者 使用@SpringBootTest
//@SpringBootTest
class PeopleTest {
    // 需要实例化的对象使用 @Spy
    @Spy
    private Ball football = new Football();
    // 在单元测试中,没有启动 spring 框架,此时就需要通过@InjectMocks完成依赖注入。
    @InjectMocks
    private People people;
    @BeforeEach
    public void beforeEach() {
        /**
         * 在使用spy过的实例前,需先调用
         * MockitoAnnotations.initMocks(this).《==》@SpringBootTest(等价)
         */
        MockitoAnnotations.initMocks(this);
    }
    @Test
    void play() {
        // 执行测试
        assertEquals(people.play(), "love football");
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值