J'ai un fichier data.xml
dans src/test/resources/
.
Comment puis-je lire ce fichier dans un nouveau FileReader
dans mon test data.scala
dans src/test/scala/
?
Les ressources sont accessibles via les méthodes de style spéciales getResource
que Java fournit. Étant donné votre exemple de data.xml
être en $SBT_PROJECT_HOME/src/test/resources/
, vous pouvez y accéder lors d'un test comme suit:
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"))
Bien sûr que source
n’est plus qu’un objet Scala IO normal = normal = normal]) de sorte que vous puissiez faire tout ce que vous voulez, comme la lecture du contenu et en l'utilisant pour les données de test.
Il existe également d'autres méthodes pour obtenir la ressource (par exemple, en tant que flux). Pour plus d'informations, consultez les méthodes getResource
sur Java Docs: Class .
Une autre alternative (surtout si vous devez accéder à une ressource en tant que File
); est d'obtenir son chemin via:
val path = getClass.getResource("/testData.txt").getPath
val file = new File(path)
comme cela a été souligné dans Scala get chemin du fichier dans le dossier des ressources
sbt copie les fichiers de src/test/resources
à target/scala-[scalaVersion]/test-classes
.
Vous pouvez accéder aux ressources de vos tests comme suit:
Source.fromURL(getClass.getResource("/testData.txt"))
Il suppose que testData.txt
était directement sous le dossier src/test/resources
. Ajoutez tous les sous-répertoires, sinon.
Et dans les cas où getClass.getResource
ne fonctionne pas (je ne sais pas quand ou pourquoi exactement), com.google.common.io.Resources.getResource
de Google Guava fait habituellement
testCompile "com.google.guava:guava:18.0"