快速开始
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@Autowiredprivate UserFeign userFeign;/*** 获取用户信息** @param uid*/@Overridepublic 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注入到标记类中,注意这里必须是实现类,不能是接口@InjectMocksprivate TestServiceImpl testService;// 定义Mock类