Junit 如何在Kotlin中测试/访问伴生对象扩展函数?
我有一个Base64Util类,其中有一个扩展函数Junit 如何在Kotlin中测试/访问伴生对象扩展函数?,junit,kotlin,junit5,kotlin-extension,Junit,Kotlin,Junit5,Kotlin Extension,我有一个Base64Util类,其中有一个扩展函数decodeBase64ToByteArray: class Base64Util { companion object { fun String.decodeBase64ToByteArray(): ByteArray { return Base64.getUrlDecoder().decode(this) } } } 现在我想通过Base64IUtilTest测试我的Base64Util。当然,我可以
decodeBase64ToByteArray
:
class Base64Util {
companion object {
fun String.decodeBase64ToByteArray(): ByteArray {
return Base64.getUrlDecoder().decode(this)
}
}
}
现在我想通过Base64IUtilTest
测试我的Base64Util
。当然,我可以访问非扩展函数,但是如何从Base64UtilTest
访问/测试String.decodeBase64ToByteArray()
?您不能简单地从外部访问成员扩展函数,例如decodeBase64ToByteArray
。只有当您进入在中定义的对象的范围时,这才是可能的:
with(Base64Util.Companion){ //.Companion could be removed
"123fsad123".decodeBase64ToByteArray()
}
例如,可以将util函数定义为文件base64Utils.kt
中的顶级函数。这样,就可以以静态方式调用它们,而不会产生任何问题 您不能简单地从外部访问成员扩展功能,例如decodeBase64ToByteArray
。只有当您进入在中定义的对象的范围时,这才是可能的:
with(Base64Util.Companion){ //.Companion could be removed
"123fsad123".decodeBase64ToByteArray()
}
例如,可以将util函数定义为文件
base64Utils.kt
中的顶级函数。这样,就可以以静态方式调用它们,而不会产生任何问题 我会省略类
和伴生对象
,所以你基本上只有一个空的函数(或者只有导入
和包
语句)kt
-文件我会省略类
和伴生对象
,所以你基本上只有一个空的函数(或仅import
和package
语句)kt
-file为什么在'base64Utils.kt'中使用小写b?这是util的标准吗?为什么在'base64Utils.kt'中使用小写b?这是util的标准吗?