У меня есть этот сценарий. Я хочу проверить метод loadInBackground NewsLoader. в методе loadInBackground - метод QueryUtil, который в свою очередь дает объект List.
в тесте:
Я высмеял этот класс QueryUtil.
Но когда я вызываю метод loadInBackground (где вызывается метод QueryUtil), он не отвечает на фиктивный результат.
Вот мой код:
public class NewsLoader extends AsyncTaskLoader<List<News>> {
private static final String LOG_NEWS_LOADER = NewsLoader.class.getName();
private String url;
public Context context;
DialogAction dialogAction;
List<News> newsListT;
public NewsLoader(Context context, String guardianRequestUrl) {
super(context);
url = guardianRequestUrl;
this.context = context;
}
@Override
protected void onStartLoading() {
Log.i(LOG_NEWS_LOADER,"onStartLoading");
super.onStartLoading();
}
@Override
public List<News> loadInBackground() {
// Log.i(LOG_NEWS_LOADER,"loadInBackground");
// Log.i(LOG_NEWS_LOADER,""+url);
List<News> newsList = new ArrayList<News>();
newsListT = newsList;
newsList = new QueryUtil().QueryUtilsForNewtwork(url,context);
return newsList;
}
мой подход:
@RunWith(MockitoJUnitRunner.class)
public class NewsLoaderTest {
@Rule
public MockitoRule mockitoRule = MockitoJUnit.rule();
@Mock
QueryUtil queryUtil;
NewsLoader newsLoader;
MainActivity context;
List<News> newsList = new ArrayList<News>();
@Before
public void setUp() throws Exception{
newsLoader = new NewsLoader(context,"alll");
newsList.add(new News("aa",
"aa","aaa","ddd","dd",
"ddd","ddd","ddd",null,"ddd","dd"));
when(queryUtil.QueryUtilsForNewtwork("aaaa",context)).thenReturn(newsList);
}
@Test
public void testReturnsNewsList() throws Exception{
when(queryUtil.QueryUtilsForNewtwork("aaaa",context)).thenReturn(newsList);
assertEquals(newsList,newsLoader.loadInBackground());
}
}
Это дает исключение времени выполнения на
assertEquals(newsList,newsLoader.loadInBackground());
Рекомендуется ли тестировать Loaders или какой-либо HTTP-запрос