现在做的项目测试超级慢,主要原因是要大量访问外部网络获得 json 数据。一个测试下来需要两个小时。 分析了一下 1 ,如果网络访问稳定,测试时间会缩短非常多 2 ,另外获取的 json 基本上内容不会变化(暂时先认为不会变好了) 3 ,访问网络是被测试程序主动调用的,并且是通过继承一个抽象类,抽象类实现了网络访问部分的功能( doGet / doPost ),子类是对获取数据的解析。
现在是想在测试的时候,替换掉 doGet / doPost 函数,看本地是否存储之前已经得到的数据,如果有直接返回,如果没有就继续访问网络。 本来以为 PowerMock 之类的可以做到但是看了半天没找到能满足我需求的 api 。 求助各位大神是不是有其他工具或者是 PowerMock 能够做到这个功能。
doGet / doPost 这部分不是测试的目标,但是不希望修改这部分代码, 另外继承自抽象类的具体之类比较多 :|, 每个之类都会构造大量实例。
1
crytis 2016-09-03 15:38:52 +08:00 via iPhone
要不然把数据写死,写到代码里。要不然弄一个 mock 接口, url 写到不同的配置文件里
|
2
andrewzhou OP @crytis 数据量预估有 100M + 而且会定期更新, mock 接口 url 写到不同的配置文件是什么意思。 我现在是想在本地搞一个类似于缓存的东西,并且有选择的截断网络访问直接从缓存出内容。来加快测试速度,之前把 url 改了写了一个类似于代理的东西速度加快了很多,但是这种方式要改被测试部分
|
3
crytis 2016-09-03 15:59:46 +08:00 via iPhone
@andrewzhou 一个接口 100MB ?
|
4
andrewzhou OP @crytis 测试的时候需要从网络获取的数据总量有 100M+, 这个就是头疼的地方 网络很慢,容易超时,拿到的数据也不一定完整,导致测试跑一遍花很多时间
|
5
andrewzhou OP 看了半天文档 似乎 JMockit Delegates: specifying custom results 能做这件事,继续研究
|
6
johnzh 2016-09-03 17:02:18 +08:00
搜下 wiremock 或者 mock server 看看呢
|
7
zacard 2016-09-03 20:14:45 +08:00 via iPhone
你需要 mockito
|
8
zjqzxc 2016-09-04 01:33:39 +08:00
改测试机上的 hosts 指向本机或者一个局域网的机器?
|
9
chocotan 2016-09-04 15:57:21 +08:00
mockito+1
|