mak*_*tar 9 data-binding android kotlin android-espresso
数据绑定设置:
apply plugin: 'kotlin-kapt'
android {
dataBinding {
enabled = true
}
}
dependencies {
kapt "com.android.databinding:compiler:3.1.0"
}
Run Code Online (Sandbox Code Playgroud)
使用数据绑定的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
}
}
Run Code Online (Sandbox Code Playgroud)
每次为此片段运行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)
...
Run Code Online (Sandbox Code Playgroud)
有点晚了,但是我通过添加带有kapt作为测试依赖项的DataBinding编译器解决了这个问题:
kaptAndroidTest 'androidx.databinding:databinding-compiler:3.3.2'
Run Code Online (Sandbox Code Playgroud)
或者,如果您的项目尚未使用Jetpack,则不是AndroidX的版本。
DAI*_*RAV -2
尝试按照此stackoverflow 答案添加 android-apt 插件:
classpath 'com.neenbedankt.gradle.plugins:android-apt:1.8'
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2007 次 |
| 最近记录: |