gpt4 book ai didi

android - 如何测试演示者 MVP Android

转载 作者:IT老高 更新时间:2023-10-28 13:39:03 26 4
gpt4 key购买 nike

我试图了解我应该如何测试我的应用程序,我仍在学习 mockito 我也看到了 mockk 但无法使其工作,这个是我的Presenter

class MyPresenterImpl @Inject constructor(var myUseCase: MyUseCase) : MyContract.Presenter {

private var mView: MyContract.View? = null
private var disposable: Disposable? = null


override fun attachView(view: MyContract.View) {
this.mView = view
this.mView?.showProgressBar(true)
}

override fun loadResults() {

disposable = getList.execute()
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(
{ result ->
mView?.showProgressBar(false)
mView?.showResults(result)
},
{ error ->
mView?.showProgressBar(false)
mView?.showError(error.localizedMessage)
})
}

override fun rxJavaUnsuscribe() {
if (disposable != null && !disposable!!.isDisposed) {
disposable!!.dispose()
}
}

override fun detachView() {
this.mView = null
}

}

我应该如何测试这个演示者?我必须添加所有这些方法吗?

我试图用 mockito 来做,但我也可以使用 mockk

有些人告诉我,我必须用 Scheduler 做一些事情并使用 trampoline 之一,但我不清楚你们中的任何人能否提供示例或解释有一点吗?

最佳答案

如果我正确理解了您的问题,那么您正在尝试了解如何使用单元测试(使用 Mockito)实现完整的 MVP 模式。

我编写了一个示例代码(显示书籍列表的应用程序),它解释了一个基本的 MVP 实现与一个 JUnit 测试用例:https://github.com/harneev/AndroidMVPkt

让我们在这里谈谈类:

  1. ViewContract.kt - 定义引导哑 View 执行操作的方法的接口(interface)。
  2. ModelContract.kt - 接口(interface)定义方法来获取数据(从数据库或从服务器),这些数据将被封装在实现类中。
  3. Presenter.kt - 处理所有业务逻辑并通过作为参数注入(inject)的具体 View 和模型来编排此逻辑。

Note: Presenter being a regular class and business logic orchestrator is dependent on both model and views. Some developers like to add Presenter reference to View interface but it is cleaner this ways.

现在为这个 MVP 设计提供单元测试用例 (PresenterTest.kt)。

I'm using mockito-kotlin as mocking framework for better kotlin support.

我在这个场景中只添加了一个名为 test if books are displayed() 的测试用例,它模拟 ViewContractModelContract 并初始化演示者。最后 Mockito.verify 方法验证 View 是否收到模型生成的书籍列表。

为了更好的单元测试用例,我总是将其分解为以下三个场景,解释如下:

// 1. given
how mocks will behave when their respective methods are called
// 2. when
when execution method is called
// 3. then
verify / assert if required action is performed

希望这会有所帮助。

关于android - 如何测试演示者 MVP Android,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56063035/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com