データの保存と取得、または新しいコンテンツ配信用のコンテンツ プロバイダを実装する場合は、 他のアプリがデータにアクセスできるようにするには、プロバイダをテストして、 予期しない動作は発生しません。このレッスンでは、 。 開発できます
コンテンツ プロバイダの統合テストを作成する
コンテンツ プロバイダを使用すると実際のユーザーデータにアクセスできるため、 隔離されたテスト環境でコンテンツ プロバイダをテストできます。この 明示的に設定されたデータの依存関係に対してのみ実行し、 テストケースですまた、テストによって実際のユーザーデータが変更されないことも意味します。対象 データが残っているために失敗するテストを記述しないように ロールバックできます。同様に、コードの追加や削除も避けてください。 連絡先情報をプロバイダに入力する必要があります。
コンテンツ プロバイダを単独でテストするには、ProviderTestCase2
を使用します。
クラスです。このクラスを使用すると、次のような Android モック オブジェクト クラスを使用できます。
IsolatedContext
と MockContentResolver
でファイルと
実際のユーザーデータには影響を与えません。
統合テストは、JUnit 4 テストクラスとして作成する必要があります。関連資料 JUnit 4 テストクラスの作成と JUnit 4 アサーションの使用方法の詳細については、 ローカル単体テストクラス。
コンテンツ プロバイダの統合テストを作成するには、次のことを行う必要があります。 手順:
- テストクラスを
ProviderTestCase2
のサブクラスとして作成します。 - AndroidX Test が提供する
AndroidJUnitRunner
クラスを指定します。 デフォルトのテストランナーとして設定できます。 ApplicationProvider
クラスのContext
オブジェクトを設定します。詳しくは、 スニペットをご覧ください。
Kotlin
@Throws(Exception::class) override fun setUp() { super.setUp() context = ApplicationProvider.getApplicationContext<Context>() }
Java
@Override protected void setUp() throws Exception { super.setUp(); setContext(ApplicationProvider.getApplicationContext()); }
ProviderTestCase2 の仕組み
ProviderTestCase2
のサブクラスでプロバイダをテストします。この基本クラス
AndroidTestCase
を拡張しているため、JUnit テスト フレームワークとして
アプリの権限をテストするための Android 固有のメソッドもあります。最も
初期化は、このクラスで重要な機能の一つです。これにより、
隔離されたテスト環境で行えます
初期化
初期化は ProviderTestCase2
のコンストラクタで行われます。
サブクラスがそれぞれのコンストラクタで呼び出します。ProviderTestCase2
コンストラクタは、ファイルとバケットへのアクセスを許可する IsolatedContext
オブジェクトを作成します。
Android システムとのその他のインタラクションはスタブ化します。
ファイルとデータベースの操作自体は、
デバイスまたはエミュレータに対してローカルであり、特殊な接頭辞を持ちます。
次にコンストラクタは、リゾルバとして使用する MockContentResolver
を作成します。
使用します。
最後に、コンストラクタはテスト対象のプロバイダのインスタンスを作成します。これは、
通常の ContentProvider
オブジェクトですが、このオブジェクトは環境全体を
IsolatedContext
の情報なので、作業対象は
隔離されたテスト環境で実施できますテストケース クラスで実行されるすべてのテスト
コピーされます。
インストルメンテーション テストと同じ方法でコンテンツ プロバイダの統合テストを実施する 単体テストです。
テスト項目
コンテンツ プロバイダをテストする場合の具体的なガイドラインは次のとおりです。
- リゾルバ メソッドによるテスト: プロバイダをインスタンス化できる場合でも
オブジェクト
ProviderTestCase2
では、常に次のコマンドを使用してリゾルバ オブジェクトでテストする必要があります。 指定します。そうすれば、プロバイダをテストする際に、 通常のアプリケーションと同じインタラクションを実行するだけです。 - パブリック プロバイダをコントラクトとしてテストする: プロバイダを
他のアプリケーションに公開されている場合は、コントラクトとしてテストする必要があります。
方法の例を以下に示します。
<ph type="x-smartling-placeholder">
- </ph>
- プロバイダが一般公開している定数でテストします。たとえば、 を使用します。 それは必ず、プロバイダによってパブリックに定義された定数でなければなりません。
- プロバイダが提供するすべての URI をテストします。プロバイダによっては、 URI。それぞれがデータの異なる側面を参照します。
- 無効な URI をテストします。単体テストでは、意図的にプロバイダを呼び出す必要があります。
エラーがないか調べます。優れたプロバイダ設計では、
無効な URI の場合は
IllegalArgumentException
。
- プロバイダの標準的な相互作用をテストする: ほとんどのプロバイダは 6 つのアクセスを提供しています。
メソッド:
query()
、insert()
、delete()
、update()
、getType()
、onCreate()
。テストでは、これらの方法がすべて機能することを確認する必要があります。 - ビジネス ロジックのテスト: コンテンツ プロバイダがビジネス ロジックを実装している場合は、 テストする必要がありますビジネス ロジックには、無効な値の処理、財務イベント、 重複の除去、結合などの操作が含まれます。