我在NestedScrollView.OnScrollChangeListener
中有下面的代码块
private val scrollChangedListener = object: NestedScrollView.OnScrollChangeListener {
override fun onScrollChange(v: NestedScrollView?, scrollX: Int, scrollY: Int, oldScrollX: Int, oldScrollY: Int) {
someMethod()
}
}
view.getScrollView().setOnScrollChangeListener(scrollChangedListener)
我想测试并确认somemethod()
在回调内部被调用。如何测试?
我尝试过此方法,但不起作用:
val nestedScrollView: NestedScrollView = mock()
val listner: NestedScrollView.OnScrollChangeListener = mock()
whenever(nestedScrollView.setOnScrollChangeListener(listner)).thenAnswer {
val listener = it.arguments[0] as NestedScrollView.OnScrollChangeListener
listener.onScrollChange(null, any(), any(), any(), any())
}
verify(view).someMethod()
您不能为android组件编写单元测试,仅因为单元测试在简单的jvm上运行并且对android框架一无所知(更多关于测试类型https://developer.android.com/studio/test)
但是您可以使用Espresso(https://developer.android.com/training/testing/espresso)或Kaspresso(https://github.com/KasperskyLab/Kaspresso)在屏幕上编写UI测试