如何建立单元测试

快速开始

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类
  

你可能感兴趣的:(私人干货,单元测试,log4j)