5

我想对一个使用 Android DownloadManager 服务的类进行单元测试,但我不确定如何去做。我应该实际使用 DownloadManager 服务还是有什么方法可以模拟它?我宁愿不让我的测试调用外部 Web 服务器。我可以使用现有的测试库吗?

4

1 回答 1

0
  1. 该解决方案使用Robolectric

要知道的一件重要事情是下载管理器请求的计数从 -1 开始。因此,如果您将请求排入队列,则请求计数将为 0。

  1. 模拟您的 DownloadManager 对象
  2. 写你的测试

    public void shouldEnqueueRequest() {
    //...
    
    //...
    
    verify(downloadManager, times(1)).enqueue(anyObject());
    //Is the DownloadManager empty
    assertThat(shadowOf(downloadManager).getRequestCount(), greaterThan(-1));
    //Get the request from the DownloadManager
    ShadowRequest realRequest = shadowOf(shadowOf(downloadManager).getRequest(0));
    assertThat(realRequest, notNullValue());
    assertThat(realRequest.getDescription(), equalTo("Your description"));
    assertThat(realRequest.getTitle(), equalTo(APP_NAME));
    }
    
于 2017-06-23T09:19:48.440 回答