我们有一个SQLite数据库和一个对应的SQLiteOpenHelper子类。这个助手有一个onDowngrade我想为其编写Espresso测试的实现。
完整的onDowngrade实现在这里可用。这是它的简化版本:
@Override
public void onDowngrade(SQLiteDatabase db, int oldVersion, int newVersion) {
db.execSQL("CREATE TABLE IF NOT EXISTS foo_tmp (_id integer primary key, bar text not null, baz text not null);");
db.execSQL("INSERT INTO foo_tmp(_id,bar,baz) SELECT _id,bar,baz FROM foo;");
db.execSQL("DROP TABLE IF EXISTS foo;");
db.execSQL("RENAME TABLE foo_tmp TO foo;");
}
Run Code Online (Sandbox Code Playgroud)
该测试将加载具有很高版本号以及已添加或已删除列的数据库转储。然后,它将获得一个可读的数据库,并确保该版本已降级为当前的预期版本,并且列名是预期的列名。完整的资源在这里。看起来是这样的:
@Test
public void testMigration() throws IOException {
writeDatabaseFile("database" + File.separator + dbFilename);
InstancesDatabaseHelper databaseHelper = new InstancesDatabaseHelper();
SQLiteDatabase db = databaseHelper.getReadableDatabase(); …Run Code Online (Sandbox Code Playgroud)