タイトルの通りです。Robolectric で提供されるメモリ データベースには制限があることを認識しています。これを Active Android で使用する方法はありますか? デフォルトの構成では、すべてのテストが実行された後にデータベースがクリアされるように見えますが、テストごとではありません。
質問する
1062 次
1 に答える
5
私は greenDao を使用していますが、原則は同じです。
私の Application クラスは私の DB を初期化します (DB には名前があります)。私のテストでは、Application をサブクラス化し (Robolectric が代わりにこのバージョンを呼び出せるようにします)、DB 名を取得するメソッドをオーバーライドし、null を返します。これは、インメモリ DB を作成することを意味します。アプリケーションの作成はセットアップの一部であるため、テストごとに新しいインメモリ DB が使用されます。
public class MyApplication extends android.app.Application {
@Override
public void onCreate() {
super.onCreate();
initialiseDB(getDatabaseName());
}
protected String getDatabaseName() {
return "regular-db-name";
}
private void initialiseDB(String dbName) {
// DB initialization
// one example would be:
Configuration.Builder builder = new Configuration.Builder(this);
builder.setDatabaseName(dbName);
ActiveAndroid.initialize(builder.create());
}
}
public class TestApplication extends MyApplication {
@Override
protected String getDatabaseName() {
// use fresh in memory db each time
return null;
}
}
于 2014-03-12T12:36:01.057 に答える