3

I have a SqlDelight database that is working nicely. I create it like this:

Database(AndroidSqliteDriver(Database.Schema, context, DatabaseName)

For unit-tests, I create an in-memory database like this:

Database(JdbcSqliteDriver(JdbcSqliteDriver.IN_MEMORY).apply { 
        Database.Schema.create(this) 
})

I wanted to do the same for androidTests that run on the emulator or on a physical device, but JdbcSqliteDriver doesn't work in Android, presumably because Android doesn't have that package installed by default.

How do I run an in-memory database in AndroidTest (or in production)?

Jacques.S
  • 3,262
  • 2
  • 21
  • 27

1 Answers1

8

It turns out if you don't name your database, it creates an in-memory version:

Database(AndroidSqliteDriver(Database.Schema, context, null)

Because AndroidSqliteDriver uses SupportSQLiteOpenHelper.Builder which has this in the documentation:

    /**
     * @param name Name of the database file, or null for an in-memory database.
     * @return This
     */
    @NonNull
    public Builder name(@Nullable String name) {
        mName = name;
        return this;
    }
Jacques.S
  • 3,262
  • 2
  • 21
  • 27