1

私はContentProviderを使ってデータベースに直接アクセスするのではなく、データを提供するアプリケーションを持っています。アプリケーションは期待どおりに動作していますが、単体テストに問題があります。ContentProviderに「ライブ」ではなくテストデータベースを使用させるにはどうすればよいですか?私はのContentProviderを使用していなかった場合、私は私のSQLiteOpenHelper sublassのコンストラクタに別のデータベース名を渡すこともできますが、今のデータベースは、私のContentProviderでのonCreate()の呼び出しで作成されます。ContentProvidersとデータベースを使ったAndroidのユニットテスト

@Override 
public boolean onCreate() 
{ 
    UKMPGDataProvider.init(getContext(), Constants.DATABASE_NAME); 
    return (UKMPGDataProvider.getWritableDatabase() == null) ? false : true; 
} 

することができますようにデータベース名はハードコードされています。

テスト名をContentProviderに渡す方法はありますか?

答えて

0

を回避するためにdependency injectionパターンを使用する必要があり、私はProviderTestCase2が自動的にデータベースにプレフィックスを追加します拡張ました。

+0

ProviderTestCase2では、実際のAndroid Contact ContentProviderを使わずに、MyListContactActivityの動作をテストすることは可能ですか?動作中のテストコードはありますか? – sancho21

0

あなたは掘削のビットの後、この

+0

Flexoさんに感謝します。しかし、onCreateの呼び出しはシステムから来ているので、何も挿入できません。パブリックフラグを使用して、作成したいデータベース名を指定することはできますが、それはあまりエレガントではありません。 – barry

関連する問題