Android单元测试研究与实践(25)

发表于:2017-02-21来源:meituan作者:潘铭炜 黄超点击数: 标签:单元测试Android
RestAdapter.Builderbuilder=newRestAdapter.Builder(); builder.setClient(newMockClient()); 这种方式下retrofit的response可以由单元测试编写者设置,而不来源于网络,从而解除了对
  • RestAdapter.Builder builder = new RestAdapter.Builder(); 
  •  
  • builder.setClient(new MockClient()); 
  • 这种方式下retrofit的response可以由单元测试编写者设置,而不来源于网络,从而解除了对网络环境的依赖。

    在实际项目中使用Robolectric构建单元测试

    单元测试的范围

    在Android项目中,单元测试的对象是组件状态、控件行为、界面元素和自定义函数。本文并不推荐对每个函数进行一对一的测试,像onStart()、onDestroy()这些周期函数并不需要全部覆盖到。商业项目多采用Scrum模式,要求快速迭代,有时候未必有较多的时间写单元测试,不再要求逐个函数写单元测试。

    本文单元测试的case多来源于一个简短的业务逻辑,单元测试case需要对这段业务逻辑进行验证。在验证的过程中,开发人员可以深度了解业务流程,同时新人来了看一下项目单元测试就知道哪个逻辑跑了多少函数,需要注意哪些边界——是的,单元测试需要像文档一样具备业务指导能力。

    在大型项目中,遇到需要改动基类中代码的需求时,往往不能准确快速地知道改动后的影响范围,紧急时多采用创建子类覆盖父类函数的办法,但这不是长久之计,在足够覆盖率的单元测试支持下,跑一下单元测试就知道某个函数改动后的影响,可以放心地修改基类。

    美团的Android单元测试编写流程如图4所示。

    美团Android单元测试编写流程

    图4 美团Android单元测试编写流程

    原文转自:http://tech.meituan.com/Android_unit_test.html