コンテンツ プロバイダーをテストしたいプログラマーに役立つと思うので、このエントリを追加します。
コンテンツ プロバイダーが MyProvider と呼ばれ、いくつかの定数を定義する MyProviderContract というコントラクト クラスがあるとします。
まず、MyProviderTestCase
を継承するというテスト クラスを作成しますProviderTestCase2<MyProvider>
。コンストラクターを呼び出すコンストラクターを定義する必要がありますsuper
。
public MyProviderTestCase() {
super(MyProvider.class, MyProviderContract.AUTHORITY);
}
次に、プロバイダーを直接使用する代わりに (getProvider()
コンテンツ プロバイダーのユーザーが直接アクセスしないため使用しないでください)、 を使用し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);
}
次に、コンテンツ プロバイダーのユーザーと同様に、コンテンツ プロバイダーの代わりにコンテンツ リゾルバーを直接使用して、必要な数のテスト メソッドを追加できます。