Android MVP kotlin中的Mockito测试-然而,与此模拟异常的交互只有1次
我已经用Kotlin和MVP架构开发了一个应用程序。我想用Mockito进行单元测试,但无法实现。我得到“然而,这个模拟异常只发生了1次交互”。 在我的应用程序中,我使用了5个不同的类Android MVP kotlin中的Mockito测试-然而,与此模拟异常的交互只有1次,android,kotlin,mockito,Android,Kotlin,Mockito,我已经用Kotlin和MVP架构开发了一个应用程序。我想用Mockito进行单元测试,但无法实现。我得到“然而,这个模拟异常只发生了1次交互”。 在我的应用程序中,我使用了5个不同的类 视图-界面 内部接口 内锥类 演讲者-界面 PresenterImpl-类 视图:-它包含传递活动/片段所需的所有方法 内部:它包含结果接口方法 IntractorImpl:-它包含数据库/服务器逻辑,将从Intractor实现 演示者:-它包含访问IntractorImpl类的方法 PresenterImpl:
//Mockito
testImplementation "org.mockito:mockito-core:2.24.5"
testImplementation "org.mockito:mockito-inline:2.24.5"
如果有人知道什么,请帮帮我。我第一次用Mokito。
如果有人需要更多信息,我可以发布。下面是我的代码
class EventTest {
@Mock
val homeActivity = HomeActivity()
lateinit var eventView: HomeView
lateinit var eventInteractorImpl: HomeInteractorImpl
lateinit var eventPresenter: HomePresenter
lateinit var eventInteractor: HomeInteractor.OnEventsReceivedListener
@Before
fun setUpEventPresenter() {
eventView = mock(HomeView::class.java)
eventInteractorImpl = mock(HomeInteractorImpl::class.java)
eventPresenter = HomePresenterImpl(eventView, eventInteractorImpl)
eventInteractor = mock(HomeInteractor.OnEventsReceivedListener::class.java)
}
@Test
fun startEventTest() {
val testEvents = Event(
"1",
"Test",
"Next week we have the vacation planing in Vizag",
"This is for test",
"1",
"01-10-2019",
"26-09-2019",
"8.00",
"10.47",
"",
true
)
val events: ArrayList<Event> = ArrayList<Event>()
events.add(testEvents)
eventPresenter.getEventsList(homeActivity)
verify(eventView).showProgress()
verify(eventView).showEvents(events)
verify(eventView).hideProgress()
}
}
在getEvents()方法中,我们正在调用服务器/本地数据库,对于我们正在使用翻新的服务器。根据您的代码和您在注释中给出的解释,您得到的错误消息是正确的,因为您正在调用mock
interactior
,它无法调用其他视图函数
因此,在startEventTest()
中唯一应该验证的是verify(eventView).showProgress()
和verify(eventInteractitorImpl).getEvents(any(),any())
:
@测试
有趣的开始{
val testEvents=事件(
"1",
“测试”,
“下周我们将在维扎格进行度假计划”,
“这是测试用的”,
"1",
"01-10-2019",
"26-09-2019",
"8.00",
"10.47",
"",
真的
)
val事件:ArrayList=ArrayList()
添加(测试事件)
eventPresenter.getEventsList(homeActivity)
验证(eventView).showProgress()
验证(EventInteractitorImpl).getEvents(any(),any())
}
如果您仍然要测试
verify(eventView).showEvents(events)
和verify(eventView).hideProgress()
,而不是mock interactior,您应该创建它的实例。根据您在注释中给出的代码和解释,您得到的错误消息是正确的,因为您正在调用mockinteractitor
,它无法调用其他视图函数
因此,在startEventTest()
中唯一应该验证的是verify(eventView).showProgress()
和verify(eventInteractitorImpl).getEvents(any(),any())
:
@测试
有趣的开始{
val testEvents=事件(
"1",
“测试”,
“下周我们将在维扎格进行度假计划”,
“这是测试用的”,
"1",
"01-10-2019",
"26-09-2019",
"8.00",
"10.47",
"",
真的
)
val事件:ArrayList=ArrayList()
添加(测试事件)
eventPresenter.getEventsList(homeActivity)
验证(eventView).showProgress()
验证(EventInteractitorImpl).getEvents(any(),any())
}
如果仍要测试
验证(eventView).showEvents(events)
和验证(eventView).hideProgress()
,而不是模拟interactior,你应该创建它的实例。你能添加getEventsList函数的代码吗?@natigbayev在getEventsList函数中,我正在调用Intractor方法从服务器/本地获取数据database@NatigBabayev我的应用程序MVP几乎与此类似,没有发布getEventsList()
我认为我们无法提供任何关于测试失败原因的帮助。而且,我已经通过了媒体的免费文章限制,所以,我无法检查该帖子:D您可以在此处发布代码。@我已更新代码,请检查一次。您可以添加getEventsList函数的代码吗?@natigbayev在getEventsList函数中,我正在调用Introctor方法从服务器/本地获取数据database@NatigBabayev我的应用程序MVP几乎与此类似,没有发布getEventsList()
我认为我们无法提供任何关于测试失败原因的帮助。另外,我已经通过了中免费文章的限制,因此,我无法检查帖子:D您可以在这里发布代码。@我已经更新了代码,请检查一次。我已经尝试过这个帖子,但仍然无法执行“any()不得为null”异常即将出现。您可以使用mockito kotlin,那么您不应该出现这样的错误。我已经尝试过这个帖子,仍然无法执行“any())“不得为空”异常即将出现。您可以使用mockito kotlin,这样您就不会出现此类错误
override fun getEventsList(context: Context) {
homeView.showProgress()
homeInteractor.getEvents(context, this)
}
@Test
fun startEventTest() {
val testEvents = Event(
"1",
"Test",
"Next week we have the vacation planing in Vizag",
"This is for test",
"1",
"01-10-2019",
"26-09-2019",
"8.00",
"10.47",
"",
true
)
val events: ArrayList<Event> = ArrayList<Event>()
events.add(testEvents)
eventPresenter.getEventsList(homeActivity)
verify(eventView).showProgress()
verify(eventInteractorImpl).getEvents(any(), any())
}