b2科目四模拟试题多少题驾考考爆了怎么补救
b2科目四模拟试题多少题 驾考考爆了怎么补救

java异步调用框架 Android单元测试研究与实践(3)

电脑杂谈  发布时间:2018-02-12 11:25:24  来源:网络整理

Robolectric 2.4模拟网络请求

由于商业App的多数Activity界面数据都是通过网络请求获取,因为网络请求是大多数App首要处理的模块,测试依赖网络数据的Activity时,可以在@Before标记的函数中准备网络数据,进行网络请求的模拟。准备网络请求的代码如下:

publicvoidprepareHttpResponse(StringfilePath)throwsIOException{

StringnetData=FileUtils.readFileToString(FileUtils.

toFile(getClass().getResource(filePath)),HTTP.UTF_8);

java如何实现异步_异步调用服务_java异步调用框架

Robolectric.setDefaultHttpResponse(200,netData);

}//代码适用于Robolectric 2.4,3.0需要注意网络请求的包的位置

由于Robolectric 2.4并不会发送网络请求,因此需要本地创建网络请求所返回的数据,上述函数的filePath便是本地数据的文件的路径,setDefaultHttpResponse()则创建了该请求的Response。上述函数执行后,单元测试工程便拥有了与本地数据数据对应的网络请求,在这个函数执行后展示的Activity便是有数据的Activity。

在Robolectric 3.0环境下,单元测试可以发真的请求,并且能够请求到数据,本文依旧建议采用mock的办法构造网络请求,而不要依赖网络环境。

Activity展示测试与跳转测试

创建网络请求后,便可以测试Activity了。测试代码如下:

<ahref="http://www.jobbole.com/members/madao">@Test</a>

publicvoidtestSampleActivity(){

SampleActivity sampleActivity=Robolectric.buildActivity(SampleActivity.class).

create().resume().get();

assertNotNull(sampleActivity);

assertEquals("Activity的标题",sampleActivity.getTitle());

}

Robolectric.buildActivity()用于构造Activity,create()函数执行后,该Activity会运行到onCreate周期,resume()则对应onResume周期。assertNotNull和assertEquals是JUnit中的断言,Robolectric只提供运行环境,逻辑判断还是需要依赖JUnit中的断言。

Activity跳转是Android开发的重要逻辑,其测试方法如下:

<ahref="http://www.jobbole.com/members/madao">@Test</a>

publicvoidtestActivityTurn(ActionBarActivity firstActivity,ClasssecondActivity){

Intent intent=newIntent(firstActivity.getApplicationContext(),secondActivity);

assertEquals(intent,Robolectric.shadowOf(firstActivity).getNextStartedActivity());//3.0的API与2.4不同


本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/ruanjian/article-73452-3.html

相关阅读
    发表评论  请自觉遵守互联网相关的政策法规,严禁发布、暴力、反动的言论

    热点图片
    拼命载入中...