Je veux écrire un test Spek à Kotlin. Le test doit lire un fichier HTML à partir du src/test/resources
dossier. Comment faire?
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()
/
dans l'une d'elles, qui doit être supprimé dans l'autre):this::class.java.getResource("/html/file.html").readText()
etthis::class.java.classLoader.getResource("html/file.html").readText()
val fileContent = javaClass.getResource("/html/file.html").readText()
fait le travail encore plus courtune autre solution légèrement différente:
la source
this
pièce n'a pas fonctionné pour moi. Je recommande donc ce qui suit:fun String.asResource(): URL? = object {}.javaClass.getResource(this)
this
dans l'exemple ci-dessus fait référence à l'objet string.Je ne sais pas pourquoi c'est si difficile, mais le moyen le plus simple que j'ai trouvé (sans avoir à faire référence à une classe particulière) est:
Et puis en passant une URL absolue, par exemple
la source
{}
nécessaire? Pourquoi pas justejavaClass.getResource(path).readText()
?Une solution légèrement différente:
la source
/src/test/resources
, athis.javaClass.getResource("/<test input filename>")
fonctionné comme prévu. Merci pour la solution ci-dessus.la source
Voie Kotlin + Spring:
la source
la source
Utilisation de la classe Ressources de la bibliothèque Google Guava :
la source
Vous pourriez trouver la classe File utile:
la source
C'est comme ça que je préfère le faire:
la source