正如标题所说。我知道robolectric提供的内存数据库有限。有没有办法在Active Android中使用它?在默认配置下,似乎在运行所有测试后清除数据库,但不是每次测试都清除。
答案 0 :(得分:5)
我使用greenDao - 但原理是一样的。
我的应用程序类初始化我的数据库(数据库有一个名字)。对于我的测试,我将子类化为Application(允许Robolectric调用此版本)并覆盖获取DB名称的方法 - 并返回null。这意味着我创建了一个内存DB。由于应用程序创建是setUp的一部分,因此每个测试都使用一个新的内存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;
}
}