数据绑定(bind)设置:

apply plugin: 'kotlin-kapt'

android {
    dataBinding {
        enabled = true
    }
}

dependencies {
    kapt "com.android.databinding:compiler:3.1.0"
}

使用数据绑定(bind)的 fragment 类:
class LandingFragment : Fragment(), Injectable {

    override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?,
                          savedInstanceState: Bundle?): View? {
        val dataBinding = LandingFragmentBinding.inflate(inflater, container, false)
        return dataBinding.root
    }
}

每次为此 fragment 运行Espresso测试时,都会收到以下异常:
java.lang.NoClassDefFoundError: android.databinding.DataBinderMapperImpl
at android.databinding.DataBindingUtil.<clinit>(DataBindingUtil.java:32)
at com.sc.databinding.LandingFragmentBinding.inflate(LandingFragmentBinding.java:42)
at com.sc.ui.landing.LandingFragment.onCreateView(LandingFragment.kt:32)
...

最佳答案

有点晚了,但是我通过添加带有kapt作为测试依赖项的DataBinding编译器解决了这个问题:

kaptAndroidTest 'androidx.databinding:databinding-compiler:3.3.2'

或者,如果您的项目尚未使用Jetpack,则不是AndroidX的版本。

10-04 14:50