Vivek Modi
09/01/2021, 2:27 PMprivate lateinit var selectorViewHolder: SelectorViewHolder<Area>
@MockK lateinit var binding: SelectorDialogBinding
@MockK lateinit var mockRootView : View
@MockK lateinit var mockTextView: TextView
@Before
fun setUp() {
MockKAnnotations.init(this, relaxed = true)
binding = SelectorDialogBinding.bind(mockRootView)
selectorViewHolder = spyk(
SelectorViewHolder(binding)
) setupMockView()
}
private fun setupMockView() {
every { mockRootView.findViewById<TextView>(R.id.text) } returns mockTextView
}
@Test
fun `bindItem`() {
....
}
My view holder is genric type
class SelectorViewHolder<T : Any>(val binding: SelectorDialogBinding) : RecyclerView.ViewHolder(binding.root) {
fun bindItem(
item: T,
) {
........
}
}
}
it gives error android.view.View cannot be cast to android.widget.LinearLayout
java.lang.ClassCastException: android.view.View cannot be cast to android.widget.LinearLayout
at com.testing.app.databinding.SelectorDialogBinding.bind(SelectorDialogBinding.java:73)
my layout SelectorDialog
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="<http://schemas.android.com/apk/res/android>"
xmlns:tools="<http://schemas.android.com/tools>"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="10dp"
android:orientation="horizontal">
<TextView
android:id="@+id/text"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
tools:text="VM" />
</LinearLayout>