私はそれを考えると、私はこのエントリを追加しますコンテンツプロバイダーをテストしたいプログラマーを助けることができます。
コンテンツプロバイダがMyProviderと呼ばれ、いくつかの定数を定義するMyProviderContractというコントラクトクラスがあるとします。
まず、ProviderTestCase2<MyProvider>
を継承するMyProviderTestCase
というテストクラスを作成します。その後
public MyProviderTestCase() {
super(MyProvider.class, MyProviderContract.AUTHORITY);
}
、直接ではなく、あなたのプロバイダを使用して(あなたのコンテンツプロバイダのユーザーが直接アクセスしないようgetProvider()
の使用を避ける)、を使用:あなたはsuper
コンストラクタを呼び出すコンストラクタを定義する必要がありますgetMockContentResolver()
を使用してコンテンツリゾルバへの参照を取得し、このコンテンツリゾルバのメソッドを呼び出します(query
、insert
など)。次のコードでは、insert
メソッドをテストする方法を示します。
public void testInsert() {
Uri uri = MyProviderContract.CONTENT_URI;
ContentValues values = new ContentValues();
values.put(MyProviderContract.FIELD1, "value 1");
values.put(MyProviderContract.FIELD2, "value 2");
Uri resultingUri = getMockContentResolver().insert(uri, values);
// Then you can test the correct execution of your insert:
assertNotNull(resultingUri);
long id = ContentUris.parseId(resultingUri);
assertTrue(id > 0);
}
あなたが望むようコンテンツプロバイダのユーザーを行うだろうと、あなたは、直接あなたの代わりに、コンテンツプロバイダのコンテンツリゾルバを使用して、できるだけ多くのテストメソッドを追加することができます。
インターネット上のProviderTestCase2クラスにサンプルコードはあまりありません。これは非常に役に立ちます。 – zzzzzzzzzzzzzzzzzzzzzzzzzzzzzz
[Androidのドキュメント](http://developer.android.com/tools/testing/contentprovider_testing.html#WhatToTest)では、コンテンツプロバイダを直接使用せず、代わりにコンテンツリゾルバを使用することをおすすめします。私の記事を読んで、コンテンツプロバイダのテスト方法のより適切な例を見てください。 – eternay