自动化测试
内存泄漏测试
此文档是很久以前写的,需要更多补充
LeakCanary支持InstrumentalTest中添加相应的TestRule,除此以外,也可以对一些自定义的声明周期范围补充测试,根据需要来看。
以实际数据作为Mock源进行测试
此文档是很久以前写的,仅作为遗留产物
最近一个同事提了个通过MockResponse来帮助测试一些不好进行实际网络请求的测试,记录一下。
其思路是首先使用FileLogger这样一个OkHttp的拦截器把所有的请求和响应以json形式写入到手机本地文件上。再通过adb转移到项目的androidTest的asset目录下。此时可以通过测试用例的名字创建一个文件夹,再按某些名称规则标记刚才记录的json数据,从而可以按一个特定的顺序依次响应(主要是同一个请求下,前后顺序可能会敏感)。
每个测试用例在运行的时候,添加一个MockResponse的拦截器,另外还需要先加载对应的asset目录下的响应缓存文件,里面包含的request信息。此时可以覆盖MockResponse的方法,自定义一些逻辑决定此测试用例中okHttp发送的哪些请求会被MockResponse拦截,甚至决定如何使用这些缓存的数据。默认的话应该是Request的url只要匹配,同时缓存中尚还存在未被消耗的该url的Response,则会直接返回。
最后还可以检查该缓存文件所有数据是不都被消耗了,从而更加严格进行检查。
再总结一次:
- 添加FileLogger手动操作一次正常流程。
- 把FileLogger记录的请求数据转移到项目的androidTest->asset中。
- 在测试用例中添加MockResponse拦截器,在测试用例开始时加载对应的缓存文件。
- 可自定缓存使用逻辑。或按默认自动返回缓存网络数据,原样模拟之前操作场景。
- (可选)检查缓存数据是否全部被消耗完毕。