ServiceTestCase空指针中的MockContentResolver

时间:2011-07-28 01:29:45

标签: android mocking servicetestcase

我正在尝试以TDD-ish方式创建服务,为此我创建了以下测试。该服务基本上轮询Web服务并将新信息放入内容提供者。由于它是一项服务,我使用内容提供程序将其作为测试的oracle存储信息。

我认为我想要做的是创建一个MockContentResolver以实现这一目标,但在ProviderTestCase2类之外缺少它的示例。当我运行这个脚本时,它会使addProvider行上的指针为空。

有没有人有创建/访问模拟内容解析器的示例?在ServiceTestCase中?

public class OnDemandPollingServiceTests extends ServiceTestCase<OnDemandJobFetchingService> {
  private MockContentResolver mContentResolver;

  public OnDemandPollingServiceTests() {
        super(OnDemandJobFetchingService.class);
    }

  protected void setUp() throws Exception {
    super.setUp();
    mContext = getContext();

    ContentProvider cp = new OnDemandJobInfoProvider();
    mContentResolver.addProvider(OnDemandJobInfoProvider.AUTHORITY, cp);
  }

  protected void tearDown() throws Exception {
    super.tearDown();
  }

  public void testJobInsertion() {
    Uri url = Jobs.JobsColumns.CONTENT_URI;
    Cursor cursor;
    cursor = mContentResolver.query(url, null, null, null, null);
    int before = cursor.getCount();
    cursor.close();

    Intent startIntent = new Intent();
    startIntent.setClass(mContext, OnDemandJobFetchingService.class);
    startService(startIntent);

    cursor = mContentResolver.query(url, null, null, null, null);
    int after = cursor.getCount();
    cursor.close();
    assertTrue(before != after);
  }
}

1 个答案:

答案 0 :(得分:1)

对我而言,您似乎从未实例化mContentResolver(您没有像mContentResolver = new MockContentResolver();这样的行。