• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >Android > 在Kotlin上怎样用Mockito2 mock final 类(KAD 23),kotlinmockito2

在Kotlin上怎样用Mockito2 mock final 类(KAD 23),kotlinmockito2

作者:网友 字体:[增加 减小] 来源:互联网 时间:2017-05-26

网友通过本文主要向大家介绍了final mock up,kotlin,kotlin教程,kotlin android,kotlin语言等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

在Kotlin上怎样用Mockito2 mock final 类(KAD 23),kotlinmockito2


作者:Antonio Leiva

时间:Mar 2, 2017

原文链接:https://antonioleiva.com/mockito-2-kotlin/

 

 

如我们在前面文章中谈到的,Kotlin最常见的问题之一是,在默认情况下,所有类和函数都是关闭的。

 

这就是说,如果你要mock一个类(这在Java测试中,这些可能是非常普通的),你或是需要用保留字open将其打开,或是将其提取出一个接口。

 

这两种方法都可能是令人厌烦的,事实上他们限制Java开发者使用Kotlin。

 

幸运的是,Mockito 2 除去了这一限制,今天我计划教你怎样做。

 

那问题是什么?

 

 

想象你在Kotlin中有一个类,它像这样:

1 class ClosedClass {
2 
3     fun doSomething() {
4     }
5 }

 

你需要测试调用该类的doSomething方法。

 

其方法是这样:

 

1 @Test fun testClosedClass() {
2     val c = Mockito.mock(ClosedClass::class.java)
3     c.doSomething()
4     verify(c).doSomething()
5 }

 

 

如果你用 Mockito 1.x版本,你会得到下面错误:

 

Mockito cannot mock/spy following:

– final classes

– anonymous classes

– primitive types

 

将更新依赖关系到Mockito 2

 

如我们所说,Mockito 2 完全能够mock它,所以我们要更新依赖关系。在编写这篇文章是,Mockito 2的最新版本是2.8.9。但是,由于它们最近经常更新,请检查其最新版本。

1 testCompile 'org.mockito:mockito-core:2.8.9'

 

现在我们再次运行代码,仍然是失败!

 

 

Mockito cannot mock/spy because :

 

– final class

 

 

 

虽然,我们根本没有限制mock匿名类或原始类型,但是它不同于final类。这是为什么?

 

这个选项仍是一个实验性,要求手动激活它。

 

 

使能mock final classes选择

 

 

要使能它,你需要在文件夹test/resources/mockito-extensions下创建org.mockito.plugins.MockMaker文件:

 

 

它是一个简单的文本文件:

 

1 mock-maker-inline

 

 

再没其它内容。

 

 

现在,你能够再次测试,并看到它运行正常。非常棒!

 

 

Mock属性

 

你也能mock属性,且也没有问题。例如,如果我们修改这个类的代码:

1 class ClosedClass(val prop: Int) {
2  
3     fun doSomething() {
4     }
5 }

 

 

来让我们看看mock的属性值:

1 @Test fun testClosedClass() {
2     val c = Mockito.mock(ClosedClass::class.java)
3     `when`(c.prop).thenReturn(3)
4  
5     val prop = c.prop
6     assertEquals(3, prop)
7 }

 

我要求其返回3。其后,我检查值是正确的。

 

 

你也能够检查属性已经被调用:

 

1 verify(c).prop

 

 

结论

 

如你所见,在最流行mock库的最新版本中所有限制的消失了。

 

所以再没有借口了!现在就可以使用Kotlin编写你的所有测试。

 

请记住,你可以在这本免费指南找到所有这些内容以及更多详细内容,它将帮助你建立你的第一个项目;或在这本书中,你可以学习怎样从头开始创建一个完整的应用程序。

 

 

 

 

 

 

 

分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • 在Kotlin上怎样用Mockito2 mock final 类(KAD 23),kotlinmockito2

相关文章

  • 2017-05-26H5调用Android播放视频,h5调用android
  • 2017-05-26VS2015墙内创建ionic2 【利用nrm更换源,完美!】,vs2015ionic2
  • 2017-05-26android:从另外一个activity中返回数据
  • 2017-05-26Android源码之陌陌源码,android源码
  • 2017-05-221.7 界面原型设计
  • 2017-05-26Android之网络编程利用PHP操作MySql插入数据(四),androidmysql
  • 2017-05-26Activity被回收导致fragment的getActivity为空,fragmentgetactivity
  • 2017-05-26Android中点击事件的实现方式,android事件
  • 2017-05-26android 仿摩拜单车共享单车进度条实现StepView,androidstepview
  • 2017-05-26Android点击跳转到淘宝的某一商品详情页或者某一店铺页面,android商品详情

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • ArcGIS Android工程迁移到其他电脑不能打开的问题,arcgisandroid
    • Android定位&地图&导航——基于百度地图移动获取位置和自动定位,android定位城市
    • Bottom Sheet
    • Android 代码动态改变View的属性
    • Android必知必会-获取视频文件的截图、缩略图
    • Android官方开发文档Training系列课程中文版:数据存储之文件存储
    • perf profiling 分析程序性能
    • 解决 在Android开发上使用KSOAP2上传大图片到服务器经常报错的问题,
    • 【Android基础】Activity启动模式以及Intent Flags 与 栈 的全面解析
    • 2.3.8 SeekBar(拖动条)

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有