首页 > 解决方案 > 将 FragmentScenario 中的片段设置为从 DataBindingIdlingResource 使用的问题

问题描述

我正在关注这个 Google Codelab并在第 8 页(任务:使用数据绑定进行端到端测试),在第 8 步(编写 DataBindingIdlingResource),您必须创建一个名为DataBindingIdlingResource.kt.

class DataBindingIdlingResource : IdlingResource {
    [...]
}

private fun View.getBinding(): ViewDataBinding? = DataBindingUtil.getBinding(this)

/**
 * Sets the activity from an [ActivityScenario] to be used from [DataBindingIdlingResource].
 */
fun DataBindingIdlingResource.monitorActivity(
    activityScenario: ActivityScenario<out FragmentActivity>
) {
    activityScenario.onActivity {
        this.activity = it
    }
}

/**
 * Sets the fragment from a [FragmentScenario] to be used from [DataBindingIdlingResource].
 */
fun DataBindingIdlingResource.monitorFragment(fragmentScenario: FragmentScenario<out Fragment>) {
    fragmentScenario.onFragment {
        this.activity = it.requireActivity()
    }
}

问题: 是最后一个功能fun DataBindingIdlingResource.monitorFragment,因为fragmentScenario.onFragment提供 onlyonFragment(action: Nothing)而不是onFragment {}

我该如何解决这个问题?谢谢。

标签: androidtestingdata-bindingandroid-espressogoogle-codelab

解决方案


我已经通过将定义更改为

fun <T : Fragment> DataBindingIdlingResource.monitorFragment(fragmentScenario: FragmentScenario<T>) {

推荐阅读