这是一个基于Kotlin-Mockk的测试用例,我试图将静态类“UUID”进行模拟。
当用于获取随机字符串时,它可以正常工作,但无法模拟UUID。
mockkStatic(UUID::class) every { UUID.randomUUID().toString() } returnsMany uuidSource
//This is the uuid source
val uuidSource = listOf(
UUID.randomUUID().toString(),
UUID.randomUUID().toString(),
UUID.randomUUID().toString()
)
在下面的情况下它可以工作。
@Test
fun x1() {
mockkStatic(UUID::class)
every { UUID.randomUUID().toString() } returnsMany uuidSource
listOf(1, 2, 3). forEach { _ ->
println(UUID.randomUUID().toString())
}
}
//但在下面的情况下会出现错误
无法使私有静态长整型java.util.UUID.parse4Nibbles(java.lang.String,int)可访问:模块java.base不向未命名模块@2aae9190打开java.util
@Test fun x1() {
mockkStatic(UUID::class) every { UUID.randomUUID().toString() } returnsMany uuidSource
listOf(1, 2, 3). forEach { _ ->
println(UUID.randomUUID())
}
}
有没有解决第二种情况的方案,或者任何变通方法?