首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何模拟SQLiteOpenHelper

如何模拟SQLiteOpenHelper
EN

Stack Overflow用户
提问于 2021-07-01 20:33:30
回答 1查看 128关注 0票数 0

我试图在仪器化测试中模拟一个SQLiteOpenHelper类,因此每当任何片段试图从数据库获取信息时,它都会返回一个通用结果。但是,我一直收到一个错误:

com.example.cleaningschedule.helpers.DatabaseHandler

org.mockito.exceptions.base.MockitoException:无法模拟/间谍类,因为:

com.example.cleaningschedule.ToDoListInstrumentedTest.oneTask(ToDoListInstrumentedTest.kt:81)

  • 最后一堂课

测试类是:

代码语言:javascript
复制
@RunWith(AndroidJUnit4::class)
class ToDoListInstrumentedTest {

    @Rule
    @JvmField var activityRule: ActivityTestRule<MainActivity> = ActivityTestRule(MainActivity::class.java)

    private fun getActivity() = activityRule.activity

    @After
    fun tearDown() {
        InstrumentationRegistry.getInstrumentation().getTargetContext().deleteDatabase("TaskDatabase")
    }

    @Test
    fun oneTask() {
        val mock = mock(DatabaseHandler::class.java)
        `when`(mock.getTasks()).thenThrow()

        onView(withId(R.id.taskName)).check(matches(isDisplayed()))
    }
}

我想嘲弄的班级是:

代码语言:javascript
复制
class DatabaseHandler(context: Context): SQLiteOpenHelper(context, DATABASE_NAME, null, DATABASE_VERSION) {
    companion object {
    private const val DATABASE_VERSION = 5
    private const val DATABASE_NAME = "TaskDatabase"
        ...
    }

    override fun onCreate(db: SQLiteDatabase?) {
        ...
    }

    override fun onUpgrade(db: SQLiteDatabase?, oldVersion: Int, newVersion: Int) {
        ...
    }    
    fun getTasks(): MutableList<Pair<MutableList<String>, MutableList<Room>>> {
        ...
    }
}

我看过其他几个类似的问题,但都没有帮助:

的答案,但这给了我一个“不足以推断变量T‘的信息”

EN

回答 1

Stack Overflow用户

发布于 2021-07-02 06:23:33

我要做一个界面:

代码语言:javascript
复制
public interface ContainerHandler {
    MutableList<Pair<MutableList<String>, MutableList<Room>>> getTasks();
}

然后,我让DatabaseHandler继承这个接口,用接口调用Mockito的模拟函数。

代码语言:javascript
复制
val mock = mock(ContainerHandler::class.java)
    `when`(mock.getTasks()).thenThrow()

最后,我将我的模拟注入到测试类中。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68216607

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档