首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Getting started with Kotlin on Android

摘要 Kotlin是一门Swift类似的静态类型JVM语言,由JetBrain设计开发并开源,Java相比,Kotlin的语法更简洁,更具表达性,而且提供了更多的特性。...两位ThoughtWorks高级咨询师共同为我们分享KotlinAndroid上的运用。 ? Java VS Kotlin Java的使用中会遇到很多问题。...Extensions Java,要想扩展一个类,我们会写一堆Utils。 而在Kotlin,我们可以直接对double对象进行扩展,再也不需要Utils的类了。...Kotlin把Collections分为mutable和immutable两类,这样有助于消除错误,设计更好的API。...Kotlin's Reference 引入Kotlin ? 已知问题 Kotlinmockito的兼容性。 Kotlin里的静态代码检查工具还不完善。

71050

让你快速上手,从JUnit 4过渡到JUnit 5

本教程,我们将介绍如何创建基本的Spring Boot应用程序并将其从JUnit 4迁移到JUnit 5。 介绍 由于技术负担,大多数组织都面临着数字化转型的障碍。...在此代码片段使用SpringJUnit4 ClassRunner运行测试。这将使我们能够测试类自动关联Spring依赖关系,并在测试执行期间为此实例化应用程序上下文。...通过右键单击类,run作为JUnit测试选项Eclipse运行测试用例。它将与Spring JUnit4 ClassRunner一起运行。...这样,您就可以使用Mockito将第一组测试成功迁移到Junit5。 结论 本练习,您学习了如何从JUnit 4项目迁移到新的JUnit 5版本。...您了解了如何在JUnit 5使用JUnit 4确保向后兼容性。您了解了需要使用新的JUnit 5导入哪些包,了解了JUnit 5测试异常和使用显示名称的新方法。

2.4K10
您找到你想要的搜索结果了吗?
是的
没有找到

技巧:遵循Clean Architecture写好白盒测试

目前业务中一部分的代码使用了Storm这个框架,我们挑一个方便理解的用例,这里大概涉及三个组件: ReadSpout:从kafka、database读取消息,并将其下发 DispatcherBolt:读取上游下发的消息...方案2:Mockito Mockito实现的方案对业务没有任何入侵性,直接写测试代码即可,写出来的代码类似于: kotlin复制代码 @RunWith(PowerMockRunner::class)...其实这很像面向对象的Strategy模式——定义一个算法接口,并将每一种算法都在这个接口下实现其逻辑,令同一个类型的算法能够互换使用。这样做的好处是算法的变化不影响使用方,也不受使用方的影响。...面向对象语言相比(类型为单位),函数式语言的重用发生于较粗的粒度级别上(行为为单位),着眼于提取一些共通的运作机制,并参数化地调整其行为。...最后的版本里,我们的业务代码暴露了策略接口,便于外部将逻辑灵活的注入进来,而不是紧耦在一起

14110

Spring Boot 2.4.4、Spring Cloud 2020.0.2 发布

LoadBalancer客户端添加了基于 sticky-session 请求的支持(#901) Spring Cloud Config 使用ConfigData时添加的TLS支持(#1689) Spring...,则无法判断哪个位置有故障 #25692 @ConfigurationProperties类的默认值传递给的错误实例不可见验证程序 #25614 EmbeddedDatabaseConnection...,应用程序无法启动 #25449 Spring Boot 2.4@EntityScan不支持属性替换 #25436 SpringApplication可以替换现有的默认属性源 #25408 引导程序的初始化方法应命名为...initialize #25400 包含spring boot devtools会导致代理类上的包私有getter返回null #25367 类路径上使用devtools创建ServerHttpSecurity...#25603 修复自述文件的拼写错误 #25600 文档Java 16支持 #25527 改进Mockito测试执行监听器的文档 #25513 突出显示参考文件致动器API文件的链接 #25510

1.7K20

编写你的第一个 Android 单元测试

编写第一个 Android 单元测试  SETUP   Android 单元测试主要使用是 JUnit 测试框架 + Mockito Mock 类库 + Mockito-kotlin 的扩展库,需要在...目标代码   这里一个简单的 MVP Presenter 的例子来说明如何写单元测试。   以下测试代码来自于这里,是一个食谱搜索结果展示页面。...mock() 方法   这个方法是 mockito-kotlin 库提供的,它是一个包装类库,背后又调用了 Mockito 类库,这个库可以用来伪造一些稳定的依赖类,避免不稳定的依赖造成我们的单元测试结果不可预期...Android 框架,运行太慢,二 Repo 可能依赖了网络或者数据库或者文件,不够稳定),就可以使用 mock() 方法来创建一个模拟的类(这里 mock() 是一个泛型方法,使用kotlin...这里验证的时候使用了 JUnit 库的 assertThat() 方法,这个方法接收两个参数 ,第一个参数是验证的目标,第二个参数是一个 Matcher,因为 kotlin is 是保留关键字,所以需要用

1.7K20

2017 年你不能错过的 Java 类库

GitHub, Javadoc(http://bennidi.github.io/mbassador/) Lombok项目 使用注解来减少Java的重复代码,比如getter,setters,非空检查...标准的JUnit 参数化运行器的区别如下: 更明确 – 参数实在测试方法的参数,而不是类的字段 更少的代码 – 你不需要用构造函数来设置参数 你可以同一个类混合使用参数化和非参数化的方法。...官方网站, GitHub, 文档(https://github.com/mockito/mockito) Jukito 它结合了JUnit、Guice和Mockito的能力。...标有@Inject注解的字段会被自动注入,不需要担心会遗忘掉它们 使得将对象连接在一起变得容易,因此你可以将一个单元测试变成集成测试的一部分 ?...Awaitility是一个领域专用语言,可以允许你一种简洁且易读的方式来表达异步系统的各种期望结果。 ?

1.5K10

PowerMock(一):PowerMock的使用

如果项目中有mockito依赖还需要注意mockito的版本powermock版本对应关系,对应如下图:详细请参考Using PowerMock with Mockito,如果引入的版本不匹配则可能会报如下错误...@InjectMocks 注解会主动将已存在的mock对象注入到bean,按名称注入,这个注解修饰我们需要测试的类上。必须要手动new一个实例,不然单元测试会有问题。...方式一: PowerMockito.doNothing().when(userMapper, "updateUser", new User()); when方法传入userMapper类实例,...不然就会报如下错误: org.mockito.exceptions.misusing.MissingMethodInvocationException: when() requires an argument...需要特别注意的是一个方法只要有一个参数使用了模糊匹配,其余的参数也都需要使用模糊匹配。 mock静态方法 对静态方法的mock也比较简单,普通方法的mock相比只是多了一行代码。

6.2K71

Kotlin Vocabulary | Kotlin 委托代理

当然,委托软件行业不是什么新鲜名词。委托 (Delegation) 是一种设计模式,该模式,对象会委托一个助手 (helper) 对象来处理请求,这个助手对象被称为代理。...在装饰者模式,装饰者类被装饰类使用同一接口。装饰者会持有一个目标类的内部引用,并且包装 (或者装饰) 接口提供的所有公共方法。 您无法继承特定类型时,委托模式就显得十分有用。...当 name 被赋值时,您想要确保将第一个字母大写的同时将其余字母格式化为小写。另外,更新 name 的值时,您想要自动增加 updateCount 属性。...通过使用属性代理,我们可以将 getter 和 setter 委托给属性,从而可以复用代码。 类代理相同,您可以使用 by 来代理一个属性,Kotlin 会在您使用属性语法时生成代码来使用代理。...如果您只需要委托 getter,那么代理类需要实现 ReadProperty;而如果 getter setter 都要委托,则代理类需要实现 ReadWriteProperty。

1.9K20

Kotlin Vocabulary | Kotlin 委托代理

当然,委托软件行业不是什么新鲜名词。委托 (Delegation) 是一种设计模式,该模式,对象会委托一个助手 (helper) 对象来处理请求,这个助手对象被称为代理。...在装饰者模式,装饰者类被装饰类使用同一接口。装饰者会持有一个目标类的内部引用,并且包装 (或者装饰) 接口提供的所有公共方法。 您无法继承特定类型时,委托模式就显得十分有用。...属性代理 除了类代理,您还可以使用 by 关键字进行属性代理。通过使用属性代理,代理会负责处理对应属性 get set 函数的调用。...当 name 被赋值时,您想要确保将第一个字母大写的同时将其余字母格式化为小写。另外,更新 name 的值时,您想要自动增加 updateCount 属性。 您可以像下面这样实现这一功能: <!...通过使用属性代理,我们可以将 getter 和 setter 委托给属性,从而可以复用代码。 类代理相同,您可以使用 by 来代理一个属性,Kotlin 会在您使用属性语法时生成代码来使用代理。

15830

2018 年你可能已经错过的 Java 类库

它基于观察者模式实现对数据/事件的序列的支持,并添加了一些操作符,允许你声明式构建序列, 使得开发者无需关心底层的线程、同步、线程安全和并发数据结构。...GitHub, Javadoc Lombok项目 使用注解来减少Java的重复代码,比如getter,setters,非空检查,生成的Builder等。 val - 总算有了!...简单日志门面(SLF4J) Java简单日志门面 (SLF4J) 为不同的日志框架(比如java.util.logging, logback, log4j)提供了简单的门面或者抽象的实现,允许最终用户部署时能够接入自己想要使用的日志框架...标准的JUnit 参数化运行器的区别如下: 更明确 - 参数实在测试方法的参数,而不是类的字段 更少的代码 - 你不需要用构造函数来设置参数 你可以同一个类混合使用参数化和非参数化的方法。...标有@Inject注解的字段会被自动注入,不需要担心会遗忘掉它们 使得将对象连接在一起变得容易,因此你可以将一个单元测试变成集成测试的一部分 ?

1.6K20

2018年不能错过的 14 个 Java 库!

@SneakyThrows - 大胆地引发检查异常,没有触发他们之前! @同步 - 同步:不要暴露你的锁。 @Getter(lazy = true)懒惰是一种美德!...JUnitParams 标准JUnit的主要区别: 更明确 - params是测试方法参数,而不是类字段 更少的代码 - 你不需要一个构造函数来设置参数 您可以一个类混合使用非参数方法的参数...(JUnit的Parametrised,它只是连续的参数数量): ?...Jukito 集合 JUnit, Guice, 和 Mockito优点: 通过自动化,大大减少了样板,导致更容易阅读测试 引入对测试对象的API更改更有弹性的测试 用@Inject注释的字段会自动注入...使得将对象连接在一起变得容易,因此您可以将单元测试缩放为部分集成测试 ?

1.6K10

Kotlin的一些技巧迂回操作分享

我们这里讲的Kotlin,就是一门这个Котлин岛命名的现代程序设计语言。它是一门静态类型编程语言,支持JVM平台,Android平台,浏览器JS运行环境,本地机器码等。...支持Java,Android 100% 完全互操作。 ?...本文将给大家详细关于Kotlin技巧迂回操作的一些内容,下面话不多说了,来一起看看详细的介绍吧 不需要 import 就能使用的顶层函数 一个顶层函数,除非你同一个文件里使用,否则就需要 import...需要传入编译器参数 -Xallow-kotlin-package 来允许使用 kotlin 开头的包名。...给data class自定义getter和setter data class SomeClass(var name: String) 众所周知 Kotlin 不允许给声明主构造器里面的属性写自定义getter

69610

KotlinJava的异同(一)

文章目录 Kotlin简介 KotlinJava的异同 1.函数 2. 变量 变量类型 可变变量 不可变变量 3. 类和属性 有参数的构造方法 setter 和 getter 4....Kotlin 可以很好地和所有现存的Java库和框架一起工作,而且性能和Java旗鼓相当。...Kotlin 是务实的、安全的、简洁的,Java可互操作,意味着它专注于使用已经证明过的解决方案处理常见任务,防止常见的像NullPointerException这样的错误,支持紧凑和易读的代码,以及提供... Java 不同的是,Kotlin 的 throw 结构是一个表达式,能作为另一个表达式的一部分使用: val percentage = if (number in 0..100...= "Kotlin" Kotlin 调用顶层函数: com.example.kotlin.strings.LANGUAGE_KOTLIN Java 调用顶层函数:

1.7K20

Java 8之后的那些新特性(六):记录类 Record Class

当你定义一个data class时,编译器会自动帮你 • 生成hasCode以及equals方法 • toString方法 而getter,setter方法Kotlin本来就是默认不需要显式定义的,...所以,当我们Kotlin的data class来对比Java定义一个数据录时,其简洁性确实提升了几个级别。...不过,好在,Java语言并未停止进步,它在Java 14,15版本引入了预览版的Record Class特性,并在Java 17将其正式引入。...age){ //这是不允许的 private String description; } 可以record类添加静态属性方法 public record EmployeeDTO...访问微言码道(https://taoofcoding.tech)阅读更多我写的文章; 访问myddd(https://myddd.org)了解我维护的全栈式领域驱动开源框架。

2.4K30

Java 已老,Kotlin 或将取而代之?

还可以对data类使用对象解构,将对象属性保存到变量。 可以避免Builder类和冗余的方法重载 Kotlin支持方法的命名参数,因此大多数情况下无需再创建Builder类。...创建Singleton不再复杂 Kotlin的object声明只需一行代码就能创建Singleton。 无需使用不必要的局部变量 Kotlin,try、when等结构其实是带有返回值的表达式。...lambda修改非final的变量无需再使用hack Java支持lambda的方式是将其自动替换成匿名类,但这样就无法lambda改修非final的变量了。...Scala不同,Kotlin没有自己的集合库,它只是扩展了JDK的集合。因此Java和Kotlin的集合类型之间转换无需使用胶水代码。...Kotlin使用 .. 运算符定义范围,使代码更紧凑。它还提供了until关键字去除边界,step操作符跳过项目。in操作符用来检查范围。

1.7K30

Kotlin概述Java的比较

基本上像Java一样,C和C ++ – Kotlin也是“静态类型编程语言”。静态类型的编程语言是使用变量之前不需要定义的那些语言。这意味着静态类型变量的使用明确声明或初始化有关。...基本上,静态类型并不意味着我们必须在使用它们之前首先声明所有的变量。变量可以程序的任何地方初始化,而我们(开发人员)必须这么做,当有需要时,可以程序的任何位置使用这些变量。...许多情况下,不需要在kotlin使用显式转换操作符,但是Kotlin,对于不可变值有“is-checking”,需要时自动插入, 类型推断 Type Inference – Kotlin...,有一件伟大的事情,你不必明确指定每个变量的类型(清晰详细的方式)。...Lambda表达的示例 – 在上面的例子,我们简单地声明一个变量’sum’,它需要两个整数,并将它们加在一起,并返回total作为一个整数。 然后我们使用’sum(2,2)’来调用它。

2.9K10
领券