我有这个测试,我把我的数据库结构转储到logcat。问题是,当我从测试中重新创建数据库时(" DROP TABLE IF EXISTS ..." - >" CREATE TABLE ...")以某种方式表#34; sqlite_sequence"是空的。
启动应用程序时所做的事情stetho表明数据库中还有所有需要的表,表格和#34; sqlite_sequence"包含他们所有的名字。
如何让我的测试检查工作正常?
public class DatabaseStructureTest extends AndroidTestCase {
private static final String TAG = DatabaseStructureTest.class.getSimpleName();
private Context mContext;
private SQLiteDatabase db;
@Override
public void setUp() throws Exception {
super.setUp();
mContext = new RenamingDelegatingContext(getContext(), "test_");
db = DatabaseMarket.getInstance(mContext).getWritableDatabase();
assertNotNull(mContext);
}
@Override
public void tearDown() throws Exception {
db.close();
super.tearDown();
}
public void testDatabaseStructure() throws Exception {
DatabaseMarket.getInstance(mContext).recreateDatabase(db);
Cursor cursor = db.rawQuery("SELECT * FROM sqlite_sequence", null);
DatabaseUtils.dumpCursor(cursor);
cursor.close();
}
}
更新 - 可能的解决方案
而不是" sqlite_sequence"我从" sqlite_master"执行查询。这对于检查egz来说有点太多了。 " android_metadata"和" sqlite_sequence"但它适用于我的情况。