MockContentResolver в нулевых указателях ServiceTestCase - PullRequest
4 голосов
/ 28 июля 2011

Я пытаюсь создать Сервис в стиле TDD, и для этого я создал следующий тест. Сервис в основном опрашивает веб-сервис и помещает новую информацию в контент-провайдера. Поскольку это сервис, я использую контент-провайдер, в котором он будет хранить информацию как оракул теста.

Я думаю, что я хочу сделать, это создать 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 Ответ

1 голос
/ 09 ноября 2011

Мне кажется, что вы никогда не создавали свой экземпляр mContentResolver (у вас нет такой строки, как mContentResolver = new MockContentResolver();.

...