Ich möchte einen Spek-Test in Kotlin schreiben. Der Test sollte eine HTML-Datei aus dem src/test/resources
Ordner lesen . Wie es geht?
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") {
...
}
}
}
})
this::class.java.classLoader.getResource("/html/file.html").readText()
/
in einer von ihnen, das in der anderen entfernt werden muss):this::class.java.getResource("/html/file.html").readText()
undthis::class.java.classLoader.getResource("html/file.html").readText()
val fileContent = javaClass.getResource("/html/file.html").readText()
macht den Job noch kürzereine andere etwas andere Lösung:
quelle
this
Teil bei mir nicht funktioniert. Daher empfehle ich Folgendes:fun String.asResource(): URL? = object {}.javaClass.getResource(this)
this
im obigen Beispiel bezieht sich auf das String-Objekt.Keine Ahnung, warum das so schwierig ist, aber der einfachste Weg, den ich gefunden habe (ohne mich auf eine bestimmte Klasse beziehen zu müssen), ist:
Und dann eine absolute URL eingeben, z
quelle
{}
erforderlich? Warum nicht einfachjavaClass.getResource(path).readText()
?Eine etwas andere Lösung:
quelle
/src/test/resources
,this.javaClass.getResource("/<test input filename>")
funktionierte wie erwartet. Danke für die obige Lösung.Kotlin + Frühlingsweg:
quelle
quelle
Verwenden der Ressourcenklasse der Google Guava-Bibliothek :
quelle
quelle
Die Datei-Klasse ist möglicherweise hilfreich:
quelle
So mache ich es lieber:
quelle