Question

I am developing an Android app with Android Studio, using Gradle as build tool. Integration with Android Studio and Robolectric is done with android-unit-test gradle plugin.

I am also using ORMLite (latest version).

Is there a way I can test ORMLite DAO's with Robolectric 2.3-SNAPSHOT?

In such version some shadows were dropped, include SQLite ones (see Robolectric dropping SQLite shadows commit). I looked at some unit tests in Robolectric repo, like this, but I need some information on how to setup the interaction with ORMLite.

Was it helpful?

Solution

Here is a working example I was able to compile and run.

@Config(emulateSdk = 18) // because Robolectric does not yet support API Level 19
@RunWith(RobolectricTestRunner.class)
public class DatabaseHelperManagerTest extends BaseTest {

    private Context context;

    public void initContext() {
        context = Robolectric.application.getApplicationContext();
        assertNotNull(context);
    }

    @BeforeClass
    public static void setup(){
        // To redirect Robolectric to stdout
        System.setProperty("robolectric.logging", "stdout");
    }

    @Test
    public void getDatabaseHelperTest(){
        initContext();

        DatabaseHelperManager databaseHelperManager = new DatabaseHelperManager();
        DatabaseHelper databaseHelper = databaseHelperManager.getHelper(context);
        assertNotNull(databaseHelper);

        Log.d(DatabaseHelperManagerTest.class.getName(), "Database Path:" + context.getDatabasePath(DatabaseHelper.DATABASE_NAME));
    }
}

For reference (in the DatabaseHelperManager class):

public DatabaseHelper getHelper(Context context) {
    return OpenHelperManager.getHelper(context, DatabaseHelper.class);
}
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top