使用 greendao 和 Mockito 测试 Android 应用程序
Testing Android App using greendao with Mockito
我不熟悉 android 测试并尝试在 Android Studio 中使用 mockito 编写单元测试(运行 在本地 jvm 上)。
我的 IDE 设置(gradle 脚本)到目前为止已完成。
dependencies {
compile fileTree(include: ['*.jar'], dir: 'libs')
// Unit testing dependencies.
testCompile 'junit:junit:4.12'
testCompile 'org.mockito:mockito-core:1.10.19'
}
在我的应用程序中,我使用 greendao
作为 ORM,但还没有这一层的抽象(计划在未来)。
当我尝试测试使用数据库相关 类 的应用程序代码部分时(例如 SqliteOpenHelper
、SqliteDatabase
用于设置数据库、SQLiteStatement
用于编译语句等)测试异常退出,例如 SQLiteOpenHelper not mocked 。
是否可以在这种模拟数据库的场景中编写单元测试(现在不花时间抽象数据库层)?
问题是获取正确的 Context
来初始化数据库层。
使用robolectric你可以在测试环境中使用RuntimeEnvironment.application
得到一个Context
对象,所以用单元测试初始化数据库层是运行在本地JVM上没有任何设备或模拟器。
我不熟悉 android 测试并尝试在 Android Studio 中使用 mockito 编写单元测试(运行 在本地 jvm 上)。
我的 IDE 设置(gradle 脚本)到目前为止已完成。
dependencies {
compile fileTree(include: ['*.jar'], dir: 'libs')
// Unit testing dependencies.
testCompile 'junit:junit:4.12'
testCompile 'org.mockito:mockito-core:1.10.19'
}
在我的应用程序中,我使用 greendao
作为 ORM,但还没有这一层的抽象(计划在未来)。
当我尝试测试使用数据库相关 类 的应用程序代码部分时(例如 SqliteOpenHelper
、SqliteDatabase
用于设置数据库、SQLiteStatement
用于编译语句等)测试异常退出,例如 SQLiteOpenHelper not mocked 。
是否可以在这种模拟数据库的场景中编写单元测试(现在不花时间抽象数据库层)?
问题是获取正确的 Context
来初始化数据库层。
使用robolectric你可以在测试环境中使用RuntimeEnvironment.application
得到一个Context
对象,所以用单元测试初始化数据库层是运行在本地JVM上没有任何设备或模拟器。