4

TDD風の方法でサービスを作成しようとしています。そのために、次のテストを作成しました。このサービスは、基本的に Web サービスをポーリングし、新しい情報をコンテンツ プロバイダーに入れます。これはサービスであるため、テストのオラクルとして情報を格納するコンテンツ プロバイダーを使用しています。

私がやりたいことは、これを達成するために MockContentResolver を作成することだと思いますが、ProviderTestCase2 クラスの外にはその例がありません。このスクリプトを実行すると、addProvider 行のポインタが null になります。

モックアウトされたコンテンツリゾルバーを作成/アクセスする例はありますか? 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);
  }
}
4

1 に答える 1

1

私には、あなたはあなたのインスタンス化をしたことがないようですmContentResolver(あなたはのような行を持っていませんmContentResolver = new MockContentResolver();

于 2011-11-09T14:06:26.663 に答える