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

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

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

@Implements(Point.class)

publicclassShadowPoint{

@RealObjectprivatePoint realPoint;

...

publicvoid__constructor__(intx,inty){

realPoint.x=x;

realPoint.y=y;

}

上述实例中,@Implements是声明Shadow的对象,@RealObject是获取一个Android 对象,constructor则是该Shadow的构造函数,Shadow还可以修改一些函数的功能,只需要在重载该函数的时候添加@Implementation,这种方式可以有效扩展Robolectric的功能。

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

Shadow是通过对真实的Android对象进行函数重载、初始化等方式对Android对象进行扩展,Shadow出来的对象的功能接近Android对象,可以看成是对Android对象一种修复。自定义的Shadow需要在config中声明,声明写法是@Config(shadows=ShadowPoint.class)。

Mock写法介绍

对于一些依赖关系复杂的测试对象,可以采用Mock框架解除依赖,常用的有Mockito。例如Mock一个List类型的对象实例,可以采用如下方式:

List list=mock(List.class);//mock得到一个对象,也可以用@mock注入一个对象

所得到的list对象实例便是List类型的实例,如果不采用mock,List其实只是个接口,我们需要构造或者借助ArrayList才能进行实例化。与Shadow不同,Mock构造的是一个虚拟的对象,用于解耦真实对象所需要的依赖。Mock得到的对象仅仅是具备测试对象的类型,并不是真实的对象,也就是并没有执行过真实对象的逻辑。

Mock也具备一些补充JUnit的验证函数,比如设置函数的执行结果,示例如下:

When(sample.dosomething()).thenReturn(someAction);//when(一个函数执行).thenReturn(一个可替代真实函数的结果的返回值);

//上述代码是设置sample.dosomething()的返回值,当执行了sample.dosomething()这个函数时,就会得到someAction,从而解除了对真实的sample.dosomething()函数的依赖

上述代码为被测函数定义一个可替代真实函数的结果的返回值。当使用这个函数后,这个可验证的结果便会产生影响,从而代替函数的真实结果,这样便解除了对真实函数的依赖。

同时Mock框架也可以验证函数的执行次数,代码如下:

List list=mock(List.class);//Mock得到一个对象

list.add(1);//执行一个函数

verify(list).add(1);//验证这个函数的执行

verify(list,time(3)).add(1);//验证这个函数的执行次数

在一些需要解除网络依赖的场景中,多使用Mock。比如对retrofit框架的网络依赖解除如下:

//代码参考了参考文献[3]

publicclassMockClientimplementsClient{

@Override

publicResponse execute(Request request)throwsIOException{

Uri uri=Uri.parse(request.getUrl());

StringresponseString="";


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

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

    • 李婧菲
      李婧菲

      写出来也不认真

    • 王会芳
      王会芳

      中央军委立即宣布进入南海进行军事演习

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