2011-07-28 9 views
4

私はTDD-ishの方法でサービスを作成しようとしており、その目的のために次のテストを作成しました。このサービスは、基本的にWebサービスをポーリングし、新しい情報をコンテンツプロバイダに配置します。それはサービスなので、私は、情報プロバイダがテストのオラクルとして情報を格納することを使用しています。ServiceTestCaseヌルポインタのMockContentResolver

私がしたいことは、これを達成するために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); 
    } 
} 

答えて

1

あなたmContentResolverをインスタンス化したことがないように(あなたがmContentResolver = new MockContentResolver();のようなラインを持っていないようです。