tutorial navisworks español scala sbt

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.