Quero escrever um teste Spek em Kotlin. O teste deve ler um arquivo HTML da src/test/resources
pasta. Como fazer isso?
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()
/
em um deles, que deve ser removido no outro):this::class.java.getResource("/html/file.html").readText()
ethis::class.java.classLoader.getResource("html/file.html").readText()
val fileContent = javaClass.getResource("/html/file.html").readText()
outra solução ligeiramente diferente:
fonte
this
parte não funcionou para mim. Portanto, eu recomendo o seguinte:fun String.asResource(): URL? = object {}.javaClass.getResource(this)
this
no exemplo acima se refere ao objeto string.Não tenho ideia de por que isso é tão difícil, mas a maneira mais simples que encontrei (sem precisar me referir a uma classe em particular) é:
E então passar um URL absoluto, por exemplo
fonte
{}
necessário? Por que não apenasjavaClass.getResource(path).readText()
?Uma solução ligeiramente diferente:
fonte
/src/test/resources
,this.javaClass.getResource("/<test input filename>")
funcionou conforme o esperado. Obrigado pela solução acima.Kotlin + Spring way:
fonte
fonte
Usando a classe de recursos da biblioteca do Google Guava :
fonte
fonte
Você pode achar a classe File útil:
fonte
É assim que prefiro fazer:
fonte