scala - tutorial - manual de navisworks 2018 en español pdf
¿Cómo acceder a los recursos de prueba? (5)
Los recursos están destinados a ser accedidos utilizando los métodos de estilo getResource
especiales que proporciona Java. Dado su ejemplo de que data.xml
está en $SBT_PROJECT_HOME/src/test/resources/
, puede acceder a él en una prueba como esta:
import scala.io.Source
// The string argument given to getResource is a path relative to
// the resources directory.
val source = Source.fromURL(getClass.getResource("/data.xml"))
Por supuesto, esa source
ahora es solo un objeto Scala IO normal para que pueda hacer lo que quiera con ella, como leer los contenidos y usarlos para los datos de prueba.
Hay otros métodos para obtener el recurso también (por ejemplo, como una secuencia). Para obtener más información, consulte los métodos getResource
en Java Docs: Class .
Tengo un archivo data.xml
en src/test/resources/
.
¿Cómo puedo leer ese archivo en un nuevo FileReader
en mi test data.scala
en src/test/scala/
?
Otra alternativa (especialmente si necesita acceder al recurso como un File
); es obtener su ruta a través de:
val path = getClass.getResource("/testData.txt").getPath
val file = new File(path)
como se ha señalado en Scala get file path of file en la carpeta resources
Para saber dónde se encuentra en el sistema de archivos durante la prueba, puede hacer algo como esto en una prueba ficticia:
import scala.collection.JavaConversions._
for(file <- new File(".").listFiles ){
println(file.getAbsolutePath)
}
Luego, cuando conoces tu camino, en tu prueba puedes usarlo como:
new File("./src/test/resources/yourfile.xml")
Y en los casos en que getClass.getResource
no funciona (no sé ni le importa cuándo ni por qué exactamente), com.google.common.io.Resources.getResource
de Google Guava generalmente lo hace
testCompile "com.google.guava:guava:18.0"
sbt copia archivos de src/test/resources
a target/scala-[scalaVersion]/test-classes
.
Puede acceder a los recursos en sus pruebas de la siguiente manera:
Source.fromURL(getClass.getResource("/testData.txt"))
testData.txt
que testData.txt
estaba directamente debajo de la carpeta src/test/resources
. Agregue cualquier subdirectorio, de lo contrario.