Sqliteを使用するアプリを作成する必要があります。次に、単体テストを記述します。これらの単体テストでは、クラスSQLiteBridge
をテストする必要があります。 SQLiteBridge
は、モデルのすべての子クラスにDAOを提供します。
SQLiteBridge
を作成するためのコンテキストが必要になるという問題が発生しました。 SQLiteBridge
は、システム上でSQLiteデータベースを作成して処理します。
Context-Objectはどこから取得しますか?
私の設定は次のようです(つまり、Junit4 [thanks god]を使用しています): http://tools.Android.com/tech-docs/unit-testing-support
編集:古いAndroidTestCase
のような方法でJunit4を失うことなく拡張できることを願っています。 :)
ここで説明されているように: https://code.google.com/p/Android-test-kit/wiki/AndroidJUnitRunnerUserGuide InstrumentationRegistryを使用してコンテキストを取得します。
ただし、InstrumentationRegistry.getContext()
を直接呼び出すと、データベースを開くときに例外が発生する場合があります。これは、getContext()によって返されるコンテキストが、アプリケーション/単体テストのコンテキストではなく、インストルメンテーションのコンテキストを指しているためと考えています。代わりにInstrumentationRegistry.getInstrumentation().getTargetContext()
を使用してください
例えば:
@RunWith(AndroidJUnit4.class)
public class SqliteTest {
Context mMockContext;
@Before
public void setUp() {
mMockContext = new RenamingDelegatingContext(InstrumentationRegistry.getTargetContext(), "test_");
}
}
RenamingDelegatingContextは、ファイル/データベース名の前に単にtest_を付けて、同じシミュレーターにあるデータを上書きしないようにします。