Как проверить AsyncTaskLoader? - PullRequest
0 голосов
/ 29 августа 2018

У меня есть этот сценарий. Я хочу проверить метод 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-запрос

...