SQLiteException不是net.sqlcipher.database.SQLiteDatabase.dbopen(本机方法)中的错误

时间:2015-06-11 14:58:33

标签: android sqlite junit sqlcipher-android

我在android studio中运行junit测试用例时遇到了问题。 问题非常奇怪,因为当我第一次在手机中运行测试用例时,它工作得非常好,但是如果已经安装了应用程序,并且当我运行测试用例时,我会收到以下错误: -

net.sqlcipher.database.SQLiteException: not an error
at net.sqlcipher.database.SQLiteDatabase.dbopen(Native Method)
at net.sqlcipher.database.SQLiteDatabase.<init>(SQLiteDatabase.java:1942)
at net.sqlcipher.database.SQLiteDatabase.openDatabase(SQLiteDatabase.java:875)
at net.sqlcipher.database.SQLiteDatabase.openOrCreateDatabase(SQLiteDatabase.java:907)
at net.sqlcipher.database.SQLiteOpenHelper.getWritableDatabase(SQLiteOpenHelper.java:132)
at net.sqlcipher.database.SQLiteOpenHelper.getWritableDatabase(SQLiteOpenHelper.java:99)

正确配置了所有sqlcipher依赖项。

2 个答案:

答案 0 :(得分:0)

首次运行应用后,数据库可能无法正常关闭。尝试使用SQLiteConnection类中的Close方法:

db.Close()

答案 1 :(得分:0)

我找到了解决这个问题的方法。 当我在日志中看到时,我发现实际问题是

loadlibs

之所以发生这种情况,是因为我没有在测试套件中调用SQLiteCipher setup()

所以我在测试类的SQLiteDatabase.loadLibs(getContext(), getContext().getFilesDir()); 方法中添加了以下行

$ open -a "Google Chrome" --args --make-default-browser