web-dev-qa-db-fra.com

Comment accéder aux ressources de test?

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/?

131
Aaron Yodaiken

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 .

191
Mitchell

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

24
Neil

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.

22
Nick A Miller

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"
0
oseiskar