We are currently working with java with kotlin project, slowly migrating the whole code to the latter.

Is it possible to mock static methods like Uri.parse() using Mockk?

How would the sample code look like?

解决方案

In addition to oleksiyp answer:

After mockk 1.8.1:

Mockk version 1.8.1 deprecated the solution below. After that version you should do:

@Before

fun mockAllUriInteractions() {

mockkStatic(Uri::class)

every { Uri.parse("http://test/path") } returns Uri("http", "test", "path")

}

mockkStatic will be cleared everytime it's called, so you don't need to unmock it anymore

DEPRECATED:

If you need that mocked behaviour to always be there, not only in a single test case, you can mock it using @Before and @After:

@Before

fun mockAllUriInteractions() {

staticMockk().mock()

every { Uri.parse("http://test/path") } returns Uri("http", "test", "path") //This line can also be in any @Test case

}

@After

fun unmockAllUriInteractions() {

staticMockk().unmock()

}

This way, if you expect more pieces of your class to use the Uri class, you may mock it in a single place, instead of polluting your code with .use everywhere.

java8中mock静态方法,使用Mockk模拟静态Java方法相关推荐

  1. Linux中进程的基本知识以及静态调用方法ps的使用

    Linux中进程的基本知识以及静态调用方法ps的使用,和以树状图的方式显示Linux中的进程

  2. 通过stream去重_分享几种 Java8 中通过 Stream 对列表进行去重的方法

    几种列表去重的方法 在这里我来分享几种列表去重的方法,算是一次整理吧,如有纰漏,请不吝赐教.1. Stream 的distinct()方法 distinct()是Java8中 Stream 提供的方法 ...

  3. java8中计算时间日期间隔几种常见方法介绍

    在平时的开发工作中免不了会进行时间日期间隔计算,下面简单介绍几个在java8中用于计算时间日期间隔的类和方法: 1.ChronoUnit类 使用ChronoUnit类可以快速方便的计算出两个时间日期之 ...

  4. java方法中与参数怎么调用_与Java方法调用中的类型参数有关的问题

    Java 8的Java语言规范在"示例4.11-1.类型的用法"中提供了一个带有类型实参的方法调用示例: void loop(S s) { this.loop(s); // is ...

  5. 非静态方法可以访问Java中的静态变量/方法吗?

    "非静态方法可以访问静态变量或调用静态方法"是Java中有关静态修饰符的常见问题之一,答案是, 是的 ,非静态方法可以访问静态变量或调用静态方法. Java中的方法. 这没有问题, ...

  6. Java多线程3:Thread中的静态方法

    Thread类中的静态方法 Thread类中的静态方法表示操作的线程是"正在执行静态方法所在的代码块的线程".为什么Thread类中要有静态方法,这样就能对CPU当前正在运行的线程 ...

  7. Java线程中的静态方法_Java多线程3:Thread中的静态方法

    Thread类中的静态方法 Thread类中的静态方法表示操作的线程是"正在执行静态方法所在的代码块的线程".为什么Thread类中要有静态方法,这样就能对CPU当前正在运行的线程 ...

  8. Java8中 Date和LocalDateTime的相互转换

    转载自  Java8中 Date和LocalDateTime的相互转换 一.在Java 8中将Date转换为LocalDateTime 方法1: 将Date转换为LocalDatetime,我们可以使 ...

  9. 了解Java8中的parallelStream

    about Stream 什么是流? Stream是java8中新增加的一个特性,被java猿统称为流. Stream 不是集合元素,它不是数据结构并不保存数据,它是有关算法和计算的,它更像一个高级版 ...

最新文章

  1. Springboot中给图片添加文字水印
  2. Linux下往移动硬盘拷贝数据步骤方式
  3. 电力论文:基于牛顿拉尔逊(直角坐标)的电气潮流计算(python实现)
  4. c++ 重载 覆盖 隐藏的区别和执行方式
  5. nginx监听事件流程
  6. tabindex, taborder和notab属性的区别
  7. 整型数组中三个数的最大乘积
  8. AT1219-歴史の研究(历史研究)【回滚莫队】
  9. vi 多窗口同步滚动--适用于人工文件比较
  10. warning:1071 (42000) Specified key was too long;max key length is 1000 bytes
  11. Win11如何开启聚焦功能?Win11开启聚焦功能的方法
  12. js 内存引用计数_快速内存管理–自动引用计数
  13. windows 画图
  14. Windows11 配置 java 8.0 环境变量
  15. 【工赋开发者社区】产业互联网和工业互联网的区别
  16. Android TextToSpeech TTS中文文本转语音(语音合成)
  17. 计算机无法识别外接光驱,USB外置光驱不能用怎么办 USB外置光驱无法识别解决方法...
  18. Xcode 报错 ERROR ITMS-90096,启动图黑屏
  19. 哈佛结构和冯·诺依曼结构的区别
  20. Java中有哪些锁,区别是什么

热门文章

  1. 关于 long long
  2. Python:爬取FaceBook用户头像
  3. vue实现自定义身份证,数字键盘(光标,输入框,键盘)
  4. 本人机械专业研究生,研一暑假开始正式接触深度学习相关内容,想通过写文章记录以及分享下学习的历程,让大家可以避免坑以及记录下自己成长的过程。今天是第一天,安装opencv包出现的问题。
  5. 【人工智能数学基础(二)】微积分
  6. iOS实现简书的登录验证方式(极验验证)
  7. 可行性研究报告——学生成绩查询系统
  8. c++ stringstream ss()
  9. 找软件开发开发手机APP需要注意什么?
  10. python写词法分析器_如何用python写一个简单的词法分析器