快速开始
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类