【发布时间】:2010-11-15 18:35:35
【问题描述】:
我正在尝试创建一个包含用于测试目的的模拟对象的数据库。我希望这个数据库驻留在我的测试包中,而不是我的应用程序包中。
protected class MockObjectOpenHelper extends SQLiteOpenHelper {
MockObjectOpenHelper() {
super(instrumentation.getContext(), FILE_NAME, null, DATABASE_VERSION);
}
@Override
public void onCreate(SQLiteDatabase db) {
...
}
}
当我从我的应用程序中创建我的 SQLiteOpenHelper 时,我会传入检测上下文以及相对于我的测试包的数据库目录的路径。我认为这将允许我在我的测试包中创建一个数据库,但情况似乎并非如此。 “数据库”目录从未在我的测试包中创建。
有没有办法让我的应用创建并访问驻留在我的测试项目中的数据库?
例外:
14:50:13.917 pool-1-thread-1 android.database.sqlite.SQLiteException: unable to open database file
at android.database.sqlite.SQLiteDatabase.dbopen(Native Method)
at android.database.sqlite.SQLiteDatabase.<init>(SQLiteDatabase.java:1584)
at android.database.sqlite.SQLiteDatabase.openDatabase(SQLiteDatabase.java:638)
at android.database.sqlite.SQLiteDatabase.openOrCreateDatabase(SQLiteDatabase.java:659)
at android.database.sqlite.SQLiteDatabase.openOrCreateDatabase(SQLiteDatabase.java:652)
at android.app.ApplicationContext.openOrCreateDatabase(ApplicationContext.java:482)
at android.database.sqlite.SQLiteOpenHelper.getWritableDatabase(SQLiteOpenHelper.java:98)
at com.myapp.test.http.DbMockHttpClient.createClientRequestDirector(DbMockHttpClient.java:52)
at com.myapp.test.http.UniversalMockHttpClient.createClientRequestDirector(UniversalMockHttpClient.java:42)
at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:539)
at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:487)
at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:465)
E
【问题讨论】: