我有一个Android应用程序,其数据库版本为1。
我在一个表中添加了一个数据列,并且忘记了迁移到新版本。
我遇到的问题是如何为此进行单元测试。我需要检查旧数据是否在新结构中插入正确,并且以正确的方式添加和填充新列。
我最好怎么做?提前谢谢。
答案 0 :(得分:1)
您可以创建一个测试用例,用于构建旧版本的数据库,然后运行迁移。这是一个精简的例子。
public class DbHelperTest extends AndroidTestCase {
private SQLiteDatabase db;
@Override
public void setUp() throws Exception {
super.setUp();
mContext = new RenamingDelegatingContext(getContext(), "db_helper_test_");
SQLiteDatabase.CursorFactory cursorFactory = new SQLiteDatabase.CursorFactory() {
@Override
public Cursor newCursor(final SQLiteDatabase db, final SQLiteCursorDriver masterQuery, final String editTable,
final SQLiteQuery query) {
return new SQLiteCursor(db, masterQuery, editTable, query);
}
};
db = SQLiteDatabase.create(cursorFactory);
createV14Db(db);
}
@Override
public void tearDown() throws Exception {
super.tearDown();
db.close();
}
private void createV14Db(SQLiteDatabase db) {
// Create tables and indices
db.execSQL(...);
// Create some data
db.execSQL(...);
}
public void testDbUpgrade() {
DbHelper dbHelper = new DbHelper(mContext);
dbHelper.onUpgrade(db, 14, 100);
// Check that things have been upgraded correctly
}
}
答案 1 :(得分:0)
您必须测试两种情况:
测试第二种情况通常很棘手。
我通常做的测试方案2是: