如何建立单元测试

本文详细介绍了如何建立单元测试,包括快速开始、Mockito的使用、Mock与Spy的区别以及单元测试的原则。强调了独立性、可重复执行的重要性,并提供了Mock对象和Spy对象的实践场景,遵循AIR原则和BCDE原则,同时给出了数据库交互和不可测代码的测试建议。
摘要由CSDN通过智能技术生成

快速开始

zixun-quickstart-mk3生成的项目已经配置好了基础的BaseTest,各个测试类只需要继承BaseTest就可以开始进行单元测试的编写了。

如何进行Mock

为了保证独立性和可重复执行,所有的外部依赖都需要进行Mock,SpringTest引入了Mockito作为单测Mock组件, Mickito官方文档:https://site.mockito.org/#how。

下面介绍如何在测试用例中对Feign进行Mock,以供参考。

待测代码及依赖:

public interface TestService {

    /**
     * 获取用户信息
     * @param uid
     */
    String getUserInfo(Integer uid);
}

@Slf4j
@Service
public class TestServiceImpl implements TestService {

	@Setter
    @Autowired
    private UserFeign userFeign;

    /**
     * 获取用户信息
     *
     * @param uid
     */
    @Override
    public String getUserInfo(Integer uid) {
        String userInfo =  userFeign.getUserInfo(uid);
        log.info("Userinfo of {}: {}", uid, userInfo);
        if (StringUtils.isEmpty(userInfo)){
            throw new IllegalArgumentException("用户不存在");
        }
        return userInfo;
    }
}

@FeignClient(name = "user", url = "127.0.0.1:8888")
public interface UserFeign {

    @GetMapping(value = "/user")
    String getUserInfo(@RequestParam("userId") Integer userId);
}

测试用例1:

public class TestServiceTests extends BaseTest {

  	// @InjectMocks会将生效的Mock注入到标记类中,注意这里必须是实现类,不能是接口
    @InjectMocks
    private TestServiceImpl testService;

  	// 定义Mock类
  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值