起首经由过程@Mock注解对须要mock的对象进行初始化,然后我们须要对测试类进行测试case分析,WeatherModelmode类是一个收集请求数据model,所以这个model类的核心是request函数。起首对request函数进行分析。必须涵盖的测试点如下:请求参数校验,请求成功且返回码精确处理逻辑校验,请求成功但校验码缺点处理逻辑校验和请求掉败处理逻辑校验。同时Model类中还有一个不雅察者解绑函数,所以测试case也须要包含解绑函数处理逻辑测试这一项。经由过程initResponse,我们可以对接口返回值进行模仿,这里采取读Json文件的办法将接口返回做成Json数据文件,结合办事端的Swagger文档可以很随便马虎的实现办事端接口数据模仿。
- @Test@SuppressWarnings("unchecked")public voidtestParams() {
- model.request(listener,"沈阳");
- try{
- Field fieldParam = WeatherModel.class.getDeclaredField("queryMap");
- Field fieldKey = WeatherModel.class.getDeclaredField("CITY");
- fieldParam.setAccessible(true);
- setFinalStatic(fieldKey, true);
- Map queryMaps = (Map) fieldParam.get(model);
- String key = (String) fieldKey.get(model);
- assertEquals("验证queryMap的Key",key,"city");
- String city = queryMaps.get("city");
- assertEquals("验证queryMap的value",city,"沈阳");
- }
- catch(Exception e) {
- //reflect error}
- }
- @Test@SuppressWarnings("unchecked")public voidtestRequestSuccess() {
- initResponse();
- Mockito.when(api.getWeather(queryMap)).thenReturn(Observable.just(netData));
- ArgumentCaptor captor = ArgumentCaptor.forClass(WeatherData.class);
- model.request(listener,"沈阳");
- Mockito.verify(api).getWeather(queryMap);
- Mockito.verify(listener).showLoading();
推荐阅读
前几天收到了一名网友的乞助,表示他无法正常上彀,并且当他在查找断网原因刹那,竟然发明默认的网关地址也消掉了。面对这种情况,他表示不知该若何处理。实际上,出现默认网关空白的情况有下面几个原因。起首,可能>>>详细阅读
本文标题:安卓单元测试全攻略,让代码测试一劳永逸
地址:http://www.17bianji.com/lsqh/36696.html
1/2 1