Android Kotlin:ArrayAdapter的单元测试getView方法
我有以下简单的Android Kotlin:ArrayAdapter的单元测试getView方法,android,unit-testing,mockito,android-testing,mockito-kotlin,Android,Unit Testing,Mockito,Android Testing,Mockito Kotlin,我有以下简单的ArrayAdapter,我想在其上运行单元测试: class AccountSpinnerAdapter(context: Context, textViewResourceId: Int, private val values: Set<Account>) : ArrayAdapter<Account>(context, textViewResourceId, values.toList()) { override fun getCount()
ArrayAdapter
,我想在其上运行单元测试:
class AccountSpinnerAdapter(context: Context, textViewResourceId: Int, private val values: Set<Account>) : ArrayAdapter<Account>(context, textViewResourceId, values.toList()) {
override fun getCount() = values.size
override fun getItem(position: Int) = values.elementAt(position)
override fun getItemId(position: Int) = position.toLong()
override fun getView(position: Int, convertView: View?, parent: ViewGroup): View {
val label = super.getView(position, convertView, parent) as TextView
label.text = values.elementAt(position).displayName
return label
}
override fun getDropDownView(position: Int, convertView: View?, parent: ViewGroup): View {
val label = super.getDropDownView(position, convertView, parent) as TextView
label.text = values.elementAt(position).displayName
return label
}
}
class AccountSpinerAdapter(上下文:context,textViewResourceId:Int,私有val值:Set):ArrayAdapter(上下文,textViewResourceId,values.toList()){
重写fun getCount()=values.size
覆盖fun getItem(位置:Int)=值。elementAt(位置)
覆盖getItemId(位置:Int)=位置。toLong()
覆盖视图(位置:Int,convertView:View?,父级:ViewGroup):视图{
val label=super.getView(位置、转换视图、父对象)作为文本视图
label.text=values.elementAt(位置).displayName
退货标签
}
覆盖getDropDownView(位置:Int,convertView:View?,父级:ViewGroup):视图{
val label=super.getDropDownView(位置、转换视图、父对象)作为文本视图
label.text=values.elementAt(位置).displayName
退货标签
}
}
getCount
,getItem
和getItemId
很容易完成
但是如何测试getView
和getDropDownView
方法?我面临的问题是:
- 第三个参数
不能为viewGroup
。如何伪造/模拟此null
视图组
- 这两种方法都在调用
。如何设置super.xxx
构造,使其返回when/then
文本视图
getView()
和getDropDownView()
您有两个选项
@上使用view=mock()
模拟整个视图
// https://mvnrepository.com/artifact/com.nhaarman/mockito-kotlin
testImplementation 'com.nhaarman:mockito-kotlin:1.6.0'
请参阅: