android MVP模式中,如何具体的分工

M_MissZen 发布于 2016/09/26 14:03
阅读 222
收藏 1

最近项目结构越来越臃肿,杂乱无章的代码对单元测试实施起来也越加麻烦。想用mvp模式重构一下项目。实施过程中阅读了很多网上关于MVP介绍、讲解、dome等文章,阐述的都太浅。

想问一下大家应如何具体的将代码分工。

第一部分:M,V,P各自实现什么?

View层
        职责:MVP模式下,View层终于扬眉吐气了,View本身该做的事情都能做了,比如UI布局,数据渲染,点击按钮交互等等
        测试方式:以正常小QA的测试思维方法,就可以来定义这一层的测试方式,测试过程中需要真机或模拟器,并做真实的操作。
        测试选型:依赖于Android环境,用谷歌强大的Espresso+AndroidJUnitRunner,Espresso用于模拟和验证各种各样的UI操作,代码存放于AndroidTest中。

Presenter层:
        职责:这一层是拉皮条的,负责M和V层的对接,所以有较少的处理输入输出的机会,他只用来控制逻辑,去调用相应的Model和View的逻辑。
        测试选型:他的职责决定了他很少去断言输入输出,测试逻辑覆盖的路径是否正确即可,因此他与Android环境无关,用Junit+Mockito测试即可,代码存放于test中。

Model层
        职责:负责数据的存取,数据可能来自于网络、数据库和内存
        数据库增删改查:需测试数据存取的准确性,依赖Android环境进行测试,因此使用AndroidJUnitRunner,代码存放于androidTest中
        网络请求:不测试真实的网络请求,但提供了Fake供其他层调用测试。
        封装的门面类:决定了数据的来源和去向是来自于本地数据库 or 网络 or 内存,此为真正对其他层暴露的Model类。此类不做数据准确性的验证,只做mock测试,验证覆盖路径。UT选型Junit+Mockito,代码存放于test中。

上文引用了其他文章中的关于M,V,P各项职能的说明。这点很赞同。

但是,网络状态的验证,验证本地是否存在文件、图片应放在Model层,还是放在Presenter层?


加载中
返回顶部
顶部