As the title says. I am aware that there is a limited in memory database provided in robolectric. Is there any way to use this with Active Android? Under the default configuration, it appears that the database is cleared after all the tests are run, but not for each test.
How can I use Active Android with an in memory database for unit tests using Robolectric?
Asked Answered
I use greenDao - but the principle is the same.
My Application class initialises my DB (the DB has a name). For my tests I subclass Application (which allows Robolectric to call this version instead) and override the method that gets the DB name - and return null. This then means I create an in memory DB. As the Application creation is part of setUp then a new in memory DB is used for each test.
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;
}
}
© 2022 - 2024 — McMap. All rights reserved.
ActiveAndroid.dispose()
inonTerminate()
of your test application class if you're not extending the ActiveAndroid application object. – Mcclean