我想在Kotlin写一个Spek测试.测试应从该src/test/resources文件夹中读取HTML文件.怎么做?
class MySpec : Spek({
describe("blah blah") {
given("blah blah") {
var fileContent : String = ""
beforeEachTest {
// How to read the file file.html in src/test/resources/html
fileContent = ...
}
it("should blah blah") {
...
}
}
}
})
Run Code Online (Sandbox Code Playgroud) 鉴于Kotlin 1.1.对于instance一些类,instance::class.java并instance.javaClass似乎是等效的:
val i = 0
println(i::class.java) // int
println(i.javaClass) // int
println(i::class.java === i.javaClass) // true
Run Code Online (Sandbox Code Playgroud)
然而,有一个微妙的区别:
val c1: Class<out Int> = i::class.java
val c2: Class<Int> = i.javaClass
Run Code Online (Sandbox Code Playgroud)
instance.javaClass可忽略地缩短,但instance::class.java与类型的相应用法更加一致.虽然您可以.javaClass在某些类型上使用,但结果可能不是您所期望的:
println(i::class.java === Int::class.java) // true
println(i.javaClass === Int.javaClass) // false
println(Int::class.java === Int.javaClass) // false
println(Int.javaClass) // class kotlin.jvm.internal.IntCompanionObject
Run Code Online (Sandbox Code Playgroud)
所以,我认为最好永远不要使用.javaClass更多的一致性.有没有反对的论据?