view = mock()
上使用@Before
来模拟整个视图。我有以下简单的ArrayAdapter,我想在其上运行UnitTests:
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
}
}
[getCount
,getItem
和getItemId
容易完成。
但是如何测试getView
和getDropDownView
方法?我面临的问题是:
viewGroup
不能为null。如何伪造/模拟此ViewGroup?super.xxx
。如何设置when/then
构造以使其返回TextView
view = mock()
上使用@Before
来模拟整个视图。// https://mvnrepository.com/artifact/com.nhaarman/mockito-kotlin
testImplementation 'com.nhaarman:mockito-kotlin:1.6.0'
请参阅:Android Unit Testing with Mockito。
view = mock()
上使用@Before
来模拟整个视图。