• 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 > 在Android上Kotlin的单元测试(KAD22),kotlinkad22

在Android上Kotlin的单元测试(KAD22),kotlinkad22

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

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

在Android上Kotlin的单元测试(KAD22),kotlinkad22


作者:Antonio Leiva

时间:Apr 25, 2017

原文链接:https://antonioleiva.com/unit-tests-android-kotlin/

 

 

当然,Kotlin也允许我们以非常简单的方法进行单元测试,它非常类似我们在Java中进行的那样。

 

 

当我们使用想Mockito库时,有一些小的复杂,但是,我们会看到一些技巧使它更容易。

 

Kotlin的单元测试

 

虽然,单一测试题目总是存在争议,我不打算在这里对此进行详细说明。

 

 

对于我们的例子,只要意识到单元测试是不需要设备进行运行的测试就足够了。IDE能够执行它们,并显示结果,识别出哪些执行了,哪些是失败了。

 

配置Gradle

 

你需要加jUnit到你的依赖关系中。在创建项目时,由于这是默认配置,它可能已经包括了。我们还要加Mockito,这在后面要用到它。

1 testCompile "junit:junit:4.12"
2 testCompile "org.mockito:mockito-core:1.10.19"

 

创建第一个测试

 

 

在app/src/test文件夹中(如果它不存在,你可以创建它),你可创建一个叫做MyTest的新类,它类似这样:

1 class MyTest {
2 
3     @Test
4     fun testsWork() {
5         assertTrue(true)
6     }
7 }

 

如你所见,它非常类似我们在Java中使用的那样。

 

怎样用Mockito

 

在Kotlin中,虽然你可能发现使用Mockito有些复杂,但是,还是可以像使用其它库一样使用Mockito。这些复杂的点,就是需要我们来解决的。

 

这是书中的例子:

 1 @Test 
 2 fun emptyDatabaseReturnsServerValue() {
 3     val db = Mockito.mock(ForecastDataSource::class.java)
 4     val server = Mockito.mock(ForecastDataSource::class.java)
 5     `when`(server.requestForecastByZipCode(any(Long::class.java), any(Long::class.java)))
 6             .then { ForecastList(0, "city", "country", listOf()) }
 7 
 8     val provider = ForecastProvider(listOf(db, server))
 9     assertNotNull(provider.requestByZipCode(0, 0))
10 }

 

你看,所有的都非常类似。你能够创建自己mock,并在整个代码中无缝地使用它们,你也能够用’MockitoJUnitRunner’和注解。

 

when字是Kotlin的保留字,所以你需要用反转逗号,甚至你可以用import重命名,给它所需的名称:

1 import org.mockito.Mockito.`when` as _when

 

在你输入mock类型时,问题出现了,它不允许null值。默认情况下,Mockito为mock对象指定null值,这问题迟早会出现的。

 

 

有个技巧可以用于这个:mockit-kotlin,它不用null了,而是默认的为每个类型给出具体值,来解决这一个问题。另外,它还利用Kotlin的优势提供了其他函数,使事情更简单。

 

 

另一个问题是,默认情况下,Kotlin的所有类和函数都被关闭,也就是它们不能被扩展。由于不能模拟它们,这是Mockito的问题。

 

但这已不是问题了,Mockito 2允许模拟最终的对象了。

 

在后续文章中,我们读到怎样使用它。

 

 

一件有趣的小事

 

 

Kotlin允许我们比Java更灵活命名函数。如果我们反转逗号,我们可以把想到的任何文字放在其中。

 

 

这对测试非常有用,其中最重要的是测试名称能够完美地描述了你要做事,以便能够更规范。

 

 

因此,你能够有这样的名称的测试:

 

1 @Test fun `test something works as expected`() {
2     Assert.assertTrue(false)
3 }

 

 

除了提高可读性外,最好的是可以在测试失败时候输出更容易理解的结果。你会看到更清晰错误。

 

 

如果在Android项目中使用它,你会看到它显示一个Lint错误,指示Android项目的方法不能有空格。在我的测试中,我没有注意到这可能是一个问题。 Gradle运行它们没有问题,所以你可以添加注释来忽略错误。

 

 

无论如何,请记住只用于测试。

 

 

结论

 

 

虽然理论上,在Java中,我们可以使用的测试工具,在Kotlin中,应该没有问题,但是基于反射和对代码添加null确实给我们带来了一些问题。

 

Kotlin非常关注无效代码,这在某些情况下可能是个粘滞点。但是,有越来越多的替代方法可以以简单的方式进行的,而与Mockito 2相比,所有这些问题都将消失。

 

 

除了这些小缺陷之外,其他一切都与Java一样。

 

 

想要继续学习Kotlin

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

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

  • 想要了解Kotlin,看这个就够了,想要Kotlin,
  • 浅谈Kotlin(三):类,浅谈kotlin
  • 浅谈Kotlin(二):基本类型、基本语法、代码风格,浅谈kotlin
  • 浅谈Kotlin(一):简介及Android Studio中配置,kotlinandroid
  • 在Kotlin上怎样用Mockito2 mock final 类(KAD 23),kotlinmockito2
  • 在Android上Kotlin的单元测试(KAD22),kotlinkad22
  • 在Android上,怎样与Kotlin一起使用Retrofit(KAD21),kotlinretrofit
  • Kotlin怎样使用Android的Dagger2,kotlindagger2
  • Kotlin中when表达式的使用:超强的switch(KAD 13),kotlinkad
  • Kotlin中功能操作与集合(KAD 11),

相关文章

  • 2017-05-26Android之Pull解析XML,androidpullxml
  • 2017-05-26Android之利用HTTP网络通信实现与PHP的交互(三),android网络通信
  • 2017-05-26Android逆向之旅---解析编译之后的Dex文件格式
  • 2017-05-26linux tun/tap设备的实现(kennel 3.10)
  • 2017-05-26Solaris IPMP两种配置方法
  • 2017-05-26我的android学习经历12,android学习经历12
  • 2017-05-26百度地图开发的学习(一),百度地图开发学习
  • 2017-05-227.5.6 WebView处理网页返回的错误码信息
  • 2017-05-26MTK处理器手机 解锁Bootloader 教程,mtkbootloader
  • 2017-05-26文件处理工具类,通用包文件处理工具

文章分类

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

最近更新的内容

    • 使用phonegap播放音频,phonegap播放音频
    • NDK中使用pthread多线程中自己写的一个BUG,ndkpthread
    • Unity Android 真机调试,unityandroid
    • 安卓第十三天笔记-服务(Service),安卓第十三天
    • 独立开发者的个人经验之谈,独立开发者的
    • [Android] Activity间切换,传递数据,androidactivity
    • Android之DOM解析XML,androiddomxml
    • UI-初识君面之理论篇,ui-初识理论篇
    • AndroidStudio项目提交(更新)到github最详细步骤
    • android studio快捷键,androidstudio

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

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